svf-tools 1.0.899 → 1.0.900

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.
@@ -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#l00696">696</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
978
- <div class="fragment"><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;{</div>
979
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; std::vector&lt;const Function*&gt; ctor_funcs;</div>
980
- <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; std::vector&lt;const Function*&gt; dtor_funcs;</div>
981
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* orgMain = 0;</div>
982
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mainMod = <span class="keyword">nullptr</span>;</div>
983
- <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; </div>
984
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
985
- <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; {</div>
986
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
987
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : mod.globals())</div>
988
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; {</div>
989
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">if</span> (global.getName().equals(<a class="code" href="LLVMModule_8cpp.html#aa18802f2f60ef8030c66a42f20f285af">SVF_GLOBAL_CTORS</a>) &amp;&amp; global.hasInitializer())</div>
990
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; {</div>
991
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
992
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; }</div>
993
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <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>) &amp;&amp; global.hasInitializer())</div>
994
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; {</div>
995
- <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
996
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; }</div>
997
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; }</div>
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>&#160;{</div>
979
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; std::vector&lt;const Function*&gt; ctor_funcs;</div>
980
+ <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; std::vector&lt;const Function*&gt; dtor_funcs;</div>
981
+ <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <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>&#160; <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>&#160; </div>
984
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;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>&#160; {</div>
986
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
987
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : mod.globals())</div>
988
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; {</div>
989
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">if</span> (global.getName().equals(<a class="code" href="LLVMModule_8cpp.html#aa18802f2f60ef8030c66a42f20f285af">SVF_GLOBAL_CTORS</a>) &amp;&amp; global.hasInitializer())</div>
990
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; {</div>
991
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
992
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; }</div>
993
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <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>) &amp;&amp; global.hasInitializer())</div>
994
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; {</div>
995
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
996
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div>
997
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; }</div>
998
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; </div>
999
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="comment">// Find main function</span></div>
1000
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;func : mod)</div>
1001
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; {</div>
1002
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keyword">auto</span> funName = func.getName();</div>
998
1003
  <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; </div>
999
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="comment">// Find main function</span></div>
1000
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;func : mod)</div>
1001
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; {</div>
1002
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keyword">auto</span> funName = func.getName();</div>
1003
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; </div>
1004
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; assert(!funName.equals(<a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>) &amp;&amp; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a> <span class="stringliteral">&quot; already defined&quot;</span>);</div>
1005
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; </div>
1006
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">if</span> (funName.equals(<span class="stringliteral">&quot;main&quot;</span>))</div>
1007
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; {</div>
1008
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; orgMain = &amp;func;</div>
1009
- <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; mainMod = &amp;mod;</div>
1010
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; }</div>
1011
- <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; }</div>
1012
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div>
1013
- <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; </div>
1014
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="comment">// Only create svf.main when the original main function is found, and also</span></div>
1015
- <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="comment">// there are global constructor or destructor functions.</span></div>
1016
- <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">if</span> (orgMain &amp;&amp; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() &gt; 0 &amp;&amp;</div>
1017
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; (ctor_funcs.size() &gt; 0 || dtor_funcs.size() &gt; 0))</div>
1018
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; {</div>
1019
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; assert(mainMod &amp;&amp; <span class="stringliteral">&quot;Module with main function not found.&quot;</span>);</div>
1020
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; M = *mainMod;</div>
1021
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="comment">// char **</span></div>
1022
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ptr = PointerType::getUnqual(M.getContext());</div>
1023
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i32 = IntegerType::getInt32Ty(M.getContext());</div>
1024
- <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="comment">// define void @svf.main(i32, i8**, i8**)</span></div>
1025
- <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 9)</span></div>
1026
- <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; FunctionCallee svfmainFn = M.getOrInsertFunction(</div>
1027
- <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
1028
- <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; Type::getVoidTy(M.getContext()),</div>
1029
- <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; i32,ptr,ptr</div>
1030
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; );</div>
1031
- <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast&lt;Function&gt;(svfmainFn.getCallee());</div>
1032
- <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;<span class="preprocessor">#else</span></div>
1033
- <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast&lt;Function&gt;(M.getOrInsertFunction(</div>
1034
- <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
1035
- <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; Type::getVoidTy(M.getContext()),</div>
1036
- <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; i32,i8ptr2,i8ptr2</div>
1037
- <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; ));</div>
1038
- <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;<span class="preprocessor">#endif</span></div>
1039
- <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; svfmain-&gt;setCallingConv(llvm::CallingConv::C);</div>
1040
- <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* block = BasicBlock::Create(M.getContext(), <span class="stringliteral">&quot;entry&quot;</span>, svfmain);</div>
1041
- <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <a class="code" href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">IRBuilder</a> Builder(block);</div>
1042
- <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="comment">// emit &quot;call void @ctor()&quot;. ctor_funcs is sorted so the functions are</span></div>
1043
- <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1044
- <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; ctor : ctor_funcs)</div>
1045
- <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; {</div>
1046
- <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(</div>
1047
- <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; ctor-&gt;getName(),</div>
1048
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; Type::getVoidTy(M.getContext())</div>
1049
- <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; );</div>
1050
- <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; Builder.CreateCall(target);</div>
1051
- <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div>
1052
- <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="comment">// main() should be called after all ctor functions and before dtor</span></div>
1053
- <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="comment">// functions.</span></div>
1054
- <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; Function::arg_iterator arg_it = svfmain-&gt;arg_begin();</div>
1055
- <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <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="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordtype">size_t</span> cnt = orgMain-&gt;arg_size();</div>
1057
- <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; assert(cnt &lt;= 3 &amp;&amp; <span class="stringliteral">&quot;Too many arguments for main()&quot;</span>);</div>
1058
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; Builder.CreateCall(orgMain, llvm::ArrayRef&lt;Value*&gt;(args, args + cnt));</div>
1059
- <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="comment">// emit &quot;call void @dtor()&quot;. dtor_funcs is sorted so the functions are</span></div>
1060
- <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1061
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; dtor : dtor_funcs)</div>
1062
- <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; {</div>
1063
- <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(dtor-&gt;getName(), Type::getVoidTy(M.getContext()));</div>
1064
- <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; Builder.CreateCall(target);</div>
1065
- <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; }</div>
1066
- <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="comment">// return;</span></div>
1067
- <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; Builder.CreateRetVoid();</div>
1068
- <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; }</div>
1069
- <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;}</div>
1004
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; assert(!funName.equals(<a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>) &amp;&amp; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a> <span class="stringliteral">&quot; already defined&quot;</span>);</div>
1005
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; </div>
1006
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">if</span> (funName.equals(<span class="stringliteral">&quot;main&quot;</span>))</div>
1007
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; {</div>
1008
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; orgMain = &amp;func;</div>
1009
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; mainMod = &amp;mod;</div>
1010
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div>
1011
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; }</div>
1012
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; }</div>
1013
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; </div>
1014
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <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>&#160; <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>&#160; <span class="keywordflow">if</span> (orgMain &amp;&amp; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() &gt; 0 &amp;&amp;</div>
1017
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; (ctor_funcs.size() &gt; 0 || dtor_funcs.size() &gt; 0))</div>
1018
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; {</div>
1019
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; assert(mainMod &amp;&amp; <span class="stringliteral">&quot;Module with main function not found.&quot;</span>);</div>
1020
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; M = *mainMod;</div>
1021
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="comment">// char **</span></div>
1022
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <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>&#160; <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>&#160; <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>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 9)</span></div>
1026
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; FunctionCallee svfmainFn = M.getOrInsertFunction(</div>
1027
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <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>&#160; Type::getVoidTy(M.getContext()),</div>
1029
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; i32,ptr,ptr</div>
1030
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; );</div>
1031
+ <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast&lt;Function&gt;(svfmainFn.getCallee());</div>
1032
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;<span class="preprocessor">#else</span></div>
1033
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast&lt;Function&gt;(M.getOrInsertFunction(</div>
1034
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <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>&#160; Type::getVoidTy(M.getContext()),</div>
1036
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; i32,i8ptr2,i8ptr2</div>
1037
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; ));</div>
1038
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;<span class="preprocessor">#endif</span></div>
1039
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; svfmain-&gt;setCallingConv(llvm::CallingConv::C);</div>
1040
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* block = BasicBlock::Create(M.getContext(), <span class="stringliteral">&quot;entry&quot;</span>, svfmain);</div>
1041
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <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>&#160; <span class="comment">// emit &quot;call void @ctor()&quot;. ctor_funcs is sorted so the functions are</span></div>
1043
+ <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1044
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; ctor : ctor_funcs)</div>
1045
+ <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; {</div>
1046
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(</div>
1047
+ <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; ctor-&gt;getName(),</div>
1048
+ <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; Type::getVoidTy(M.getContext())</div>
1049
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; );</div>
1050
+ <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; Builder.CreateCall(target);</div>
1051
+ <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; }</div>
1052
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <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>&#160; <span class="comment">// functions.</span></div>
1054
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; Function::arg_iterator arg_it = svfmain-&gt;arg_begin();</div>
1055
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <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>&#160; <span class="keywordtype">size_t</span> cnt = orgMain-&gt;arg_size();</div>
1057
+ <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; assert(cnt &lt;= 3 &amp;&amp; <span class="stringliteral">&quot;Too many arguments for main()&quot;</span>);</div>
1058
+ <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; Builder.CreateCall(orgMain, llvm::ArrayRef&lt;Value*&gt;(args, args + cnt));</div>
1059
+ <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="comment">// emit &quot;call void @dtor()&quot;. dtor_funcs is sorted so the functions are</span></div>
1060
+ <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1061
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; dtor : dtor_funcs)</div>
1062
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; {</div>
1063
+ <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(dtor-&gt;getName(), Type::getVoidTy(M.getContext()));</div>
1064
+ <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; Builder.CreateCall(target);</div>
1065
+ <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; }</div>
1066
+ <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="comment">// return;</span></div>
1067
+ <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; Builder.CreateRetVoid();</div>
1068
+ <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; }</div>
1069
+ <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;}</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#l01422">1422</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1100
- <div class="fragment"><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;{</div>
1101
- <div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; 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() &amp;&amp;</div>
1102
- <div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <span class="stringliteral">&quot;SVFType has been added before&quot;</span>);</div>
1103
- <div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; </div>
1104
- <div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <span class="comment">// add SVFType&#39;s LLVM byte size iff T isSized(), otherwise byteSize is 1 (default value)</span></div>
1105
- <div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> byteSize = 1;</div>
1106
- <div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; <span class="keywordflow">if</span> (T-&gt;isSized())</div>
1107
- <div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; {</div>
1108
- <div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">llvm::DataLayout</a> &amp;DL = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;</div>
1109
- <div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>()-&gt;getDataLayout();</div>
1110
- <div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *mut_T = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<span class="keyword">&gt;</span>(T);</div>
1111
- <div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; byteSize = DL.getTypeAllocSize(mut_T);</div>
1112
- <div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; }</div>
1113
- <div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; </div>
1114
- <div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype;</div>
1115
- <div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;PointerType&gt;(T))</div>
1116
- <div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; {</div>
1117
- <div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>(byteSize);</div>
1118
- <div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; }</div>
1119
- <div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <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&lt;IntegerType&gt;(T))</div>
1120
- <div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; {</div>
1121
- <div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; <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="l01445"></a><span class="lineno"> 1445</span>&#160; <span class="keywordtype">unsigned</span> signWidth = intT-&gt;getBitWidth();</div>
1123
- <div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; assert(signWidth &lt; INT16_MAX &amp;&amp; <span class="stringliteral">&quot;Integer width too big&quot;</span>);</div>
1124
- <div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; svfIntT-&gt;setSignAndWidth(intT-&gt;getSignBit() ? -signWidth : signWidth);</div>
1125
- <div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; svftype = svfIntT;</div>
1126
- <div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; }</div>
1127
- <div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <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&lt;FunctionType&gt;(T))</div>
1128
- <div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; 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-&gt;getReturnType()));</div>
1129
- <div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <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&lt;StructType&gt;(T))</div>
1130
- <div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; {</div>
1131
- <div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <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="l01455"></a><span class="lineno"> 1455</span>&#160; <span class="keywordflow">if</span> (st-&gt;hasName())</div>
1133
- <div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; svfst-&gt;setName(st-&gt;getName().str());</div>
1134
- <div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; svftype = svfst;</div>
1135
- <div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; }</div>
1136
- <div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keyword">auto</span> at = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div>
1137
- <div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; {</div>
1138
- <div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; <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="l01462"></a><span class="lineno"> 1462</span>&#160; svfat-&gt;setNumOfElement(at-&gt;getNumElements());</div>
1140
- <div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; svfat-&gt;setTypeOfElement(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(at-&gt;getElementType()));</div>
1141
- <div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; svftype = svfat;</div>
1142
- <div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; }</div>
1143
- <div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; <span class="keywordflow">else</span></div>
1144
- <div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; {</div>
1145
- <div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <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="l01469"></a><span class="lineno"> 1469</span>&#160; <span class="keyword">auto</span> ot = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherType.html">SVFOtherType</a>(T-&gt;isSingleValueType(), byteSize);</div>
1147
- <div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; llvm::raw_string_ostream(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>) &lt;&lt; *T;</div>
1148
- <div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; ot-&gt;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="l01472"></a><span class="lineno"> 1472</span>&#160; svftype = ot;</div>
1150
- <div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; }</div>
1151
- <div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; </div>
1152
- <div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">addTypeInfo</a>(svftype);</div>
1153
- <div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <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>&#160; </div>
1155
- <div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; <span class="keywordflow">return</span> svftype;</div>
1156
- <div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;}</div>
1099
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01417">1417</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1100
+ <div class="fragment"><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;{</div>
1101
+ <div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; 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() &amp;&amp;</div>
1102
+ <div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; <span class="stringliteral">&quot;SVFType has been added before&quot;</span>);</div>
1103
+ <div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; </div>
1104
+ <div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; <span class="comment">// add SVFType&#39;s LLVM byte size iff T isSized(), otherwise byteSize is 1 (default value)</span></div>
1105
+ <div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> byteSize = 1;</div>
1106
+ <div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <span class="keywordflow">if</span> (T-&gt;isSized())</div>
1107
+ <div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; {</div>
1108
+ <div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">llvm::DataLayout</a> &amp;DL = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;</div>
1109
+ <div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>()-&gt;getDataLayout();</div>
1110
+ <div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *mut_T = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<span class="keyword">&gt;</span>(T);</div>
1111
+ <div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; byteSize = DL.getTypeAllocSize(mut_T);</div>
1112
+ <div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; }</div>
1113
+ <div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; </div>
1114
+ <div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype;</div>
1115
+ <div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;PointerType&gt;(T))</div>
1116
+ <div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; {</div>
1117
+ <div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>(byteSize);</div>
1118
+ <div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; }</div>
1119
+ <div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; <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&lt;IntegerType&gt;(T))</div>
1120
+ <div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; {</div>
1121
+ <div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; <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="l01440"></a><span class="lineno"> 1440</span>&#160; <span class="keywordtype">unsigned</span> signWidth = intT-&gt;getBitWidth();</div>
1123
+ <div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; assert(signWidth &lt; INT16_MAX &amp;&amp; <span class="stringliteral">&quot;Integer width too big&quot;</span>);</div>
1124
+ <div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; svfIntT-&gt;setSignAndWidth(intT-&gt;getSignBit() ? -signWidth : signWidth);</div>
1125
+ <div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; svftype = svfIntT;</div>
1126
+ <div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; }</div>
1127
+ <div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <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&lt;FunctionType&gt;(T))</div>
1128
+ <div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; 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-&gt;getReturnType()));</div>
1129
+ <div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <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&lt;StructType&gt;(T))</div>
1130
+ <div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; {</div>
1131
+ <div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; <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="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keywordflow">if</span> (st-&gt;hasName())</div>
1133
+ <div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; svfst-&gt;setName(st-&gt;getName().str());</div>
1134
+ <div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; svftype = svfst;</div>
1135
+ <div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; }</div>
1136
+ <div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keyword">auto</span> at = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div>
1137
+ <div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; {</div>
1138
+ <div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; <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="l01457"></a><span class="lineno"> 1457</span>&#160; svfat-&gt;setNumOfElement(at-&gt;getNumElements());</div>
1140
+ <div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; svfat-&gt;setTypeOfElement(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(at-&gt;getElementType()));</div>
1141
+ <div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; svftype = svfat;</div>
1142
+ <div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; }</div>
1143
+ <div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; <span class="keywordflow">else</span></div>
1144
+ <div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; {</div>
1145
+ <div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <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="l01464"></a><span class="lineno"> 1464</span>&#160; <span class="keyword">auto</span> ot = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherType.html">SVFOtherType</a>(T-&gt;isSingleValueType(), byteSize);</div>
1147
+ <div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; llvm::raw_string_ostream(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>) &lt;&lt; *T;</div>
1148
+ <div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; ot-&gt;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="l01467"></a><span class="lineno"> 1467</span>&#160; svftype = ot;</div>
1150
+ <div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; }</div>
1151
+ <div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; </div>
1152
+ <div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">addTypeInfo</a>(svftype);</div>
1153
+ <div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div>
1154
+ <div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; </div>
1155
+ <div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordflow">return</span> svftype;</div>
1156
+ <div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;}</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 -&gt; <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> extern Func def</p>
1228
1228
  <p>Overwrite App Func def -&gt; <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#l00904">904</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1231
- <div class="fragment"><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;{</div>
1232
- <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> funDecls, funDefs, extFuncs, overwriteExtFuncs;</div>
1233
- <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;string&gt;</a> declNames, defNames, intersectNames;</div>
1234
- <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, const Function*&gt;</a> NameToFunDefMapTy;</div>
1235
- <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, Set&lt;const Function*&gt;</a>&gt; NameToFunDeclsMapTy;</div>
1236
- <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
1237
- <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; {</div>
1238
- <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="comment">// extapi.bc functions</span></div>
1239
- <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">if</span> (mod.getName().str() == <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;<a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>())</div>
1240
- <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; {</div>
1241
- <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#afb06c18fcf916e84dfacb139f644aa48">collectExtFunAnnotations</a>(&amp;mod);</div>
1242
- <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; fun : mod.functions())</div>
1243
- <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; {</div>
1244
- <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="comment">// there is main declaration in ext bc, it should be mapped to</span></div>
1245
- <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="comment">// main definition in app bc.</span></div>
1246
- <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">&quot;main&quot;</span>)</div>
1247
- <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; {</div>
1248
- <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; funDecls.insert(&amp;fun);</div>
1249
- <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; declNames.insert(fun.getName().str());</div>
1250
- <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; }</div>
1251
- <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">&quot;svf__main&quot;</span>)</div>
1252
- <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; {</div>
1253
- <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.push_back(&amp;fun);</div>
1254
- <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="comment">// Get all called functions in svf_main()</span></div>
1255
- <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; std::vector&lt;const Function*&gt; calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(&amp;fun);</div>
1256
- <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <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="l00932"></a><span class="lineno"> 932</span>&#160; }</div>
1258
- <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">else</span></div>
1259
- <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; {</div>
1260
- <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; extFuncs.insert(&amp;fun);</div>
1261
- <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="comment">// Find overwrite functions in extapi.bc</span></div>
1262
- <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>.find(&amp;fun) != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>.end())</div>
1263
- <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; {</div>
1264
- <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; std::vector&lt;std::string&gt; annotations = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>[&amp;fun];</div>
1265
- <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keyword">auto</span> it =</div>
1266
- <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; std::find_if(annotations.begin(), annotations.end(),</div>
1267
- <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; [&amp;](<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; annotation)</div>
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>&#160;{</div>
1232
+ <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> funDecls, funDefs, extFuncs, overwriteExtFuncs;</div>
1233
+ <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;string&gt;</a> declNames, defNames, intersectNames;</div>
1234
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, const Function*&gt;</a> NameToFunDefMapTy;</div>
1235
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, Set&lt;const Function*&gt;</a>&gt; NameToFunDeclsMapTy;</div>
1236
+ <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; 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>&#160; {</div>
1238
+ <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="comment">// extapi.bc functions</span></div>
1239
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keywordflow">if</span> (mod.getName().str() == <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;<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>&#160; {</div>
1241
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#afb06c18fcf916e84dfacb139f644aa48">collectExtFunAnnotations</a>(&amp;mod);</div>
1242
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; fun : mod.functions())</div>
1243
+ <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; {</div>
1244
+ <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <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>&#160; <span class="comment">// main definition in app bc.</span></div>
1246
+ <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">&quot;main&quot;</span>)</div>
1247
+ <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; {</div>
1248
+ <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; funDecls.insert(&amp;fun);</div>
1249
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; declNames.insert(fun.getName().str());</div>
1250
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; }</div>
1251
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">&quot;svf__main&quot;</span>)</div>
1252
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; {</div>
1253
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.push_back(&amp;fun);</div>
1254
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <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>&#160; std::vector&lt;const Function*&gt; calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(&amp;fun);</div>
1256
+ <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <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>&#160; }</div>
1258
+ <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">else</span></div>
1259
+ <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; {</div>
1260
+ <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; extFuncs.insert(&amp;fun);</div>
1261
+ <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="comment">// Find overwrite functions in extapi.bc</span></div>
1262
+ <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>.find(&amp;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>&#160; {</div>
1264
+ <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; std::vector&lt;std::string&gt; annotations = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>[&amp;fun];</div>
1265
+ <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keyword">auto</span> it =</div>
1266
+ <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; std::find_if(annotations.begin(), annotations.end(),</div>
1267
+ <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; [&amp;](<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; annotation)</div>
1268
+ <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; {</div>
1269
+ <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; return annotation.find(<span class="stringliteral">&quot;OVERWRITE&quot;</span>) !=</div>
1270
+ <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; std::string::npos;</div>
1271
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; });</div>
1272
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keywordflow">if</span> (it != annotations.end())</div>
1268
1273
  <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; {</div>
1269
- <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; return annotation.find(<span class="stringliteral">&quot;OVERWRITE&quot;</span>) !=</div>
1270
- <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; std::string::npos;</div>
1271
- <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; });</div>
1272
- <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordflow">if</span> (it != annotations.end())</div>
1273
- <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; {</div>
1274
- <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; overwriteExtFuncs.insert(&amp;fun);</div>
1275
- <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; }</div>
1276
- <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; }</div>
1277
- <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; }</div>
1278
- <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; }</div>
1279
- <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; }</div>
1280
- <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">else</span></div>
1281
- <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; {</div>
1282
- <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; fun : mod.functions())</div>
1283
- <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; {</div>
1284
- <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
1274
+ <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; overwriteExtFuncs.insert(&amp;fun);</div>
1275
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; }</div>
1276
+ <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; }</div>
1277
+ <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; }</div>
1278
+ <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; }</div>
1279
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; }</div>
1280
+ <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="keywordflow">else</span></div>
1281
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; {</div>
1282
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; fun : mod.functions())</div>
1283
+ <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; {</div>
1284
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
1285
+ <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; {</div>
1286
+ <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; funDecls.insert(&amp;fun);</div>
1287
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; declNames.insert(fun.getName().str());</div>
1288
+ <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; }</div>
1289
+ <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keywordflow">else</span></div>
1285
1290
  <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; {</div>
1286
- <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; funDecls.insert(&amp;fun);</div>
1287
- <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; declNames.insert(fun.getName().str());</div>
1291
+ <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; funDefs.insert(&amp;fun);</div>
1292
+ <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; defNames.insert(fun.getName().str());</div>
1288
1293
  <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; }</div>
1289
- <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">else</span></div>
1290
- <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; {</div>
1291
- <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; funDefs.insert(&amp;fun);</div>
1292
- <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; defNames.insert(fun.getName().str());</div>
1293
- <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; }</div>
1294
- <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; }</div>
1295
- <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; }</div>
1296
- <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; }</div>
1297
- <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="comment">// Find the intersectNames</span></div>
1298
- <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; std::set_intersection(</div>
1299
- <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; declNames.begin(), declNames.end(), defNames.begin(), defNames.end(),</div>
1300
- <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; std::inserter(intersectNames, intersectNames.end()));</div>
1301
- <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; </div>
1302
- <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; NameToFunDefMapTy nameToFunDefMap;</div>
1303
- <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <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="l00981"></a><span class="lineno"> 981</span>&#160; {</div>
1305
- <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1306
- <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1307
- <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; {</div>
1308
- <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; nameToFunDefMap.emplace(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName), fdef);</div>
1309
- <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; }</div>
1310
- <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; }</div>
1311
- <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; </div>
1312
- <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; NameToFunDeclsMapTy nameToFunDeclsMap;</div>
1313
- <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <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="l00992"></a><span class="lineno"> 992</span>&#160; {</div>
1315
- <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1316
- <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1317
- <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; {</div>
1318
- <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="comment">// pair with key funName will be created automatically if it does</span></div>
1319
- <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="comment">// not exist</span></div>
1320
- <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; nameToFunDeclsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName)].insert(fdecl);</div>
1321
- <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; }</div>
1322
- <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; }</div>
1323
- <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; </div>
1324
- <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <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="l01004"></a><span class="lineno"> 1004</span>&#160; {</div>
1326
- <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1327
- <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; NameToFunDefMapTy::iterator mit;</div>
1328
- <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end() &amp;&amp;</div>
1329
- <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; (mit = nameToFunDefMap.find(funName)) != nameToFunDefMap.end())</div>
1330
- <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; {</div>
1331
- <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = mit-&gt;second;</div>
1332
- <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; }</div>
1333
- <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; }</div>
1334
- <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; </div>
1335
- <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <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="l01016"></a><span class="lineno"> 1016</span>&#160; {</div>
1337
- <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1338
- <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div>
1339
- <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keywordflow">continue</span>;</div>
1340
- <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div>
1341
- <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div>
1342
- <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">continue</span>;</div>
1294
+ <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; }</div>
1295
+ <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; }</div>
1296
+ <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; }</div>
1297
+ <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="comment">// Find the intersectNames</span></div>
1298
+ <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; std::set_intersection(</div>
1299
+ <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; declNames.begin(), declNames.end(), defNames.begin(), defNames.end(),</div>
1300
+ <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; std::inserter(intersectNames, intersectNames.end()));</div>
1301
+ <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; </div>
1302
+ <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; NameToFunDefMapTy nameToFunDefMap;</div>
1303
+ <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <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>&#160; {</div>
1305
+ <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1306
+ <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1307
+ <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; {</div>
1308
+ <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; 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>&#160; }</div>
1310
+ <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; }</div>
1311
+ <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; </div>
1312
+ <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; NameToFunDeclsMapTy nameToFunDeclsMap;</div>
1313
+ <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <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>&#160; {</div>
1315
+ <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1316
+ <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1317
+ <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; {</div>
1318
+ <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <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>&#160; <span class="comment">// not exist</span></div>
1320
+ <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; 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>&#160; }</div>
1322
+ <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; }</div>
1323
+ <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; </div>
1324
+ <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <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>&#160; {</div>
1326
+ <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1327
+ <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; NameToFunDefMapTy::iterator mit;</div>
1328
+ <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end() &amp;&amp;</div>
1329
+ <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; (mit = nameToFunDefMap.find(funName)) != nameToFunDefMap.end())</div>
1330
+ <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; {</div>
1331
+ <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = mit-&gt;second;</div>
1332
+ <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; }</div>
1333
+ <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; }</div>
1334
+ <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; </div>
1335
+ <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <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>&#160; {</div>
1337
+ <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1338
+ <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div>
1339
+ <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordflow">continue</span>;</div>
1340
+ <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div>
1341
+ <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div>
1342
+ <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordflow">continue</span>;</div>
1343
+ <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; </div>
1344
+ <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; std::vector&lt;const Function*&gt;&amp; 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>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; declsSet = mit-&gt;second;</div>
1346
+ <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <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>&#160; decls.reserve(decls.size() + declsSet.size());</div>
1343
1348
  <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; </div>
1344
- <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[fdef];</div>
1345
- <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; declsSet = mit-&gt;second;</div>
1346
- <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="comment">// Reserve space for decls to avoid more than 1 reallocation</span></div>
1347
- <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; decls.reserve(decls.size() + declsSet.size());</div>
1348
- <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; </div>
1349
- <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <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="l01030"></a><span class="lineno"> 1030</span>&#160; {</div>
1351
- <div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; decls.push_back(decl);</div>
1352
- <div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; }</div>
1353
- <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; }</div>
1354
- <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; </div>
1355
- <div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <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="l01037"></a><span class="lineno"> 1037</span>&#160; {</div>
1357
- <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <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-&gt;getName().str());</div>
1358
- <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <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="l01040"></a><span class="lineno"> 1040</span>&#160; {</div>
1360
- <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <span class="keywordflow">if</span> (extfun-&gt;getName().str().compare(declName) == 0)</div>
1361
- <div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; {</div>
1362
- <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="comment">// AppDecl -&gt; ExtDef in Table 1</span></div>
1363
- <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = extfun;</div>
1364
- <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="comment">// ExtDef -&gt; AppDecl in Table 1</span></div>
1365
- <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[extfun];</div>
1366
- <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; decls.push_back(fdecl);</div>
1367
- <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="comment">// Keep all called functions in extfun</span></div>
1368
- <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="comment">// ExtDecl -&gt; ExtDecl in Table 1</span></div>
1369
- <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; std::vector&lt;const Function*&gt; calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(extfun);</div>
1370
- <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <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="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="keywordflow">break</span>;</div>
1372
- <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; }</div>
1373
- <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; }</div>
1374
- <div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; }</div>
1375
- <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; </div>
1376
- <div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <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="l01060"></a><span class="lineno"> 1060</span>&#160; {</div>
1378
- <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <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-&gt;getName().str());</div>
1379
- <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <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="l01063"></a><span class="lineno"> 1063</span>&#160; {</div>
1381
- <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="keywordflow">if</span> (appfuncName.compare(owfunc-&gt;getName().str()) == 0)</div>
1382
- <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; {</div>
1383
- <div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* returnType1 = appfunc-&gt;getReturnType();</div>
1384
- <div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* returnType2 = owfunc-&gt;getReturnType();</div>
1385
- <div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; </div>
1386
- <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="comment">// Check if the return types are compatible:</span></div>
1387
- <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="comment">// (1) The types are exactly the same,</span></div>
1388
- <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <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="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="comment">// Note that getPointerElementType() will be deprecated in the future versions of LLVM.</span></div>
1390
- <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="comment">// Considering compatibility, avoid using getPointerElementType()-&gt;isIntegerTy(8) to determine if it is a void * type.</span></div>
1391
- <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">if</span> (!(returnType1 == returnType2 || (returnType1-&gt;isPointerTy() &amp;&amp; returnType2-&gt;isPointerTy())))</div>
1392
- <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; {</div>
1393
- <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="keywordflow">continue</span>;</div>
1394
- <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; }</div>
1395
- <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; </div>
1396
- <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keywordflow">if</span> (appfunc-&gt;arg_size() != owfunc-&gt;arg_size())</div>
1397
- <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="keywordflow">continue</span>;</div>
1398
- <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; </div>
1399
- <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="keywordtype">bool</span> argMismatch = <span class="keyword">false</span>;</div>
1400
- <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; Function::const_arg_iterator argIter1 = appfunc-&gt;arg_begin();</div>
1401
- <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; Function::const_arg_iterator argIter2 = owfunc-&gt;arg_begin();</div>
1402
- <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keywordflow">while</span> (argIter1 != appfunc-&gt;arg_end() &amp;&amp; argIter2 != owfunc-&gt;arg_end())</div>
1403
- <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; {</div>
1404
- <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* argType1 = argIter1-&gt;getType();</div>
1405
- <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* argType2 = argIter2-&gt;getType();</div>
1406
- <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; </div>
1407
- <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <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="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordflow">if</span> (!(argType1 == argType2 || (argType1-&gt;isPointerTy() &amp;&amp; argType2-&gt;isPointerTy())))</div>
1409
- <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; {</div>
1410
- <div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; argMismatch = <span class="keyword">true</span>;</div>
1411
- <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordflow">break</span>;</div>
1412
- <div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; }</div>
1413
- <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; argIter1++;</div>
1414
- <div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; argIter2++;</div>
1415
- <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; }</div>
1416
- <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="keywordflow">if</span> (argMismatch)</div>
1417
- <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">continue</span>;</div>
1418
- <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; </div>
1419
- <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>*<span class="keyword">&gt;</span>(appfunc);</div>
1420
- <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = fun-&gt;getParent();</div>
1421
- <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* funType = fun-&gt;getFunctionType();</div>
1422
- <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName = fun-&gt;getName().str();</div>
1423
- <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="comment">// Replace app function definition with declaration</span></div>
1424
- <div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* declaration = Function::Create(funType, GlobalValue::ExternalLinkage, funName, mod);</div>
1425
- <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; fun-&gt;replaceAllUsesWith(declaration);</div>
1426
- <div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; fun-&gt;eraseFromParent();</div>
1427
- <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; declaration-&gt;setName(funName);</div>
1428
- <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="comment">// AppDef -&gt; ExtDef in Table 1, AppDef has been changed to AppDecl</span></div>
1429
- <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[declaration] = owfunc;</div>
1430
- <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="comment">// ExtDef -&gt; AppDef in Table 1</span></div>
1431
- <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[owfunc];</div>
1432
- <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; decls.push_back(declaration);</div>
1433
- <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; <span class="comment">// Keep all called functions in owfunc</span></div>
1434
- <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <span class="comment">// ExtDecl -&gt; ExtDecl in Table 1</span></div>
1435
- <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; std::vector&lt;const Function*&gt; calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(owfunc);</div>
1436
- <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <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="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="keywordflow">break</span>;</div>
1438
- <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; }</div>
1439
- <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; }</div>
1440
- <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; }</div>
1441
- <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;}</div>
1349
+ <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <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>&#160; {</div>
1351
+ <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; decls.push_back(decl);</div>
1352
+ <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; }</div>
1353
+ <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; }</div>
1354
+ <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; </div>
1355
+ <div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <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>&#160; {</div>
1357
+ <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <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-&gt;getName().str());</div>
1358
+ <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <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>&#160; {</div>
1360
+ <div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="keywordflow">if</span> (extfun-&gt;getName().str().compare(declName) == 0)</div>
1361
+ <div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; {</div>
1362
+ <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="comment">// AppDecl -&gt; ExtDef in Table 1</span></div>
1363
+ <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <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>&#160; <span class="comment">// ExtDef -&gt; AppDecl in Table 1</span></div>
1365
+ <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; std::vector&lt;const Function*&gt;&amp; 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>&#160; decls.push_back(fdecl);</div>
1367
+ <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="comment">// Keep all called functions in extfun</span></div>
1368
+ <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="comment">// ExtDecl -&gt; ExtDecl in Table 1</span></div>
1369
+ <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; std::vector&lt;const Function*&gt; 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>&#160; <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>&#160; <span class="keywordflow">break</span>;</div>
1372
+ <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; }</div>
1373
+ <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; }</div>
1374
+ <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; }</div>
1375
+ <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; </div>
1376
+ <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <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>&#160; {</div>
1378
+ <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <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-&gt;getName().str());</div>
1379
+ <div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <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>&#160; {</div>
1381
+ <div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="keywordflow">if</span> (appfuncName.compare(owfunc-&gt;getName().str()) == 0)</div>
1382
+ <div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; {</div>
1383
+ <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* returnType1 = appfunc-&gt;getReturnType();</div>
1384
+ <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* returnType2 = owfunc-&gt;getReturnType();</div>
1385
+ <div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; </div>
1386
+ <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <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>&#160; <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>&#160; <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>&#160; <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>&#160; <span class="comment">// Considering compatibility, avoid using getPointerElementType()-&gt;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>&#160; <span class="keywordflow">if</span> (!(returnType1 == returnType2 || (returnType1-&gt;isPointerTy() &amp;&amp; returnType2-&gt;isPointerTy())))</div>
1392
+ <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; {</div>
1393
+ <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="keywordflow">continue</span>;</div>
1394
+ <div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; }</div>
1395
+ <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; </div>
1396
+ <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">if</span> (appfunc-&gt;arg_size() != owfunc-&gt;arg_size())</div>
1397
+ <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">continue</span>;</div>
1398
+ <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; </div>
1399
+ <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <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>&#160; Function::const_arg_iterator argIter1 = appfunc-&gt;arg_begin();</div>
1401
+ <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; Function::const_arg_iterator argIter2 = owfunc-&gt;arg_begin();</div>
1402
+ <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="keywordflow">while</span> (argIter1 != appfunc-&gt;arg_end() &amp;&amp; argIter2 != owfunc-&gt;arg_end())</div>
1403
+ <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; {</div>
1404
+ <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* argType1 = argIter1-&gt;getType();</div>
1405
+ <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* argType2 = argIter2-&gt;getType();</div>
1406
+ <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; </div>
1407
+ <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <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>&#160; <span class="keywordflow">if</span> (!(argType1 == argType2 || (argType1-&gt;isPointerTy() &amp;&amp; argType2-&gt;isPointerTy())))</div>
1409
+ <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; {</div>
1410
+ <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; argMismatch = <span class="keyword">true</span>;</div>
1411
+ <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="keywordflow">break</span>;</div>
1412
+ <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; }</div>
1413
+ <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; argIter1++;</div>
1414
+ <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; argIter2++;</div>
1415
+ <div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; }</div>
1416
+ <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordflow">if</span> (argMismatch)</div>
1417
+ <div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="keywordflow">continue</span>;</div>
1418
+ <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; </div>
1419
+ <div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>*<span class="keyword">&gt;</span>(appfunc);</div>
1420
+ <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = fun-&gt;getParent();</div>
1421
+ <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* funType = fun-&gt;getFunctionType();</div>
1422
+ <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName = fun-&gt;getName().str();</div>
1423
+ <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="comment">// Replace app function definition with declaration</span></div>
1424
+ <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <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>&#160; fun-&gt;replaceAllUsesWith(declaration);</div>
1426
+ <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; fun-&gt;eraseFromParent();</div>
1427
+ <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; declaration-&gt;setName(funName);</div>
1428
+ <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="comment">// AppDef -&gt; 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>&#160; <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>&#160; <span class="comment">// ExtDef -&gt; AppDef in Table 1</span></div>
1431
+ <div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; std::vector&lt;const Function*&gt;&amp; 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>&#160; decls.push_back(declaration);</div>
1433
+ <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="comment">// Keep all called functions in owfunc</span></div>
1434
+ <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="comment">// ExtDecl -&gt; ExtDecl in Table 1</span></div>
1435
+ <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; std::vector&lt;const Function*&gt; 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>&#160; <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>&#160; <span class="keywordflow">break</span>;</div>
1438
+ <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; }</div>
1439
+ <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; }</div>
1440
+ <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; }</div>
1441
+ <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;}</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#l01126">1126</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1469
- <div class="fragment"><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;{</div>
1470
- <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, Set&lt;GlobalVariable*&gt;</a>&gt; NameToGlobalsMapTy;</div>
1471
- <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; NameToGlobalsMapTy nameToGlobalsMap;</div>
1472
- <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
1473
- <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; {</div>
1474
- <div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
1475
- <div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : mod.globals())</div>
1476
- <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; {</div>
1477
- <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keywordflow">if</span> (global.hasPrivateLinkage())</div>
1478
- <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="keywordflow">continue</span>;</div>
1479
- <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <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="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>.empty())</div>
1481
- <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">continue</span>;</div>
1482
- <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; nameToGlobalsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)].insert(&amp;global);</div>
1483
- <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; }</div>
1484
- <div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; }</div>
1485
- <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; </div>
1486
- <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pair : nameToGlobalsMap)</div>
1487
- <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; {</div>
1488
- <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;GlobalVariable*&gt;</a> &amp;globals = pair.second;</div>
1489
- <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; </div>
1490
- <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> repIt =</div>
1491
- <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; std::find_if(globals.begin(), globals.end(),</div>
1492
- <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; [](<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* g)</div>
1493
- <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; {</div>
1494
- <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; return g-&gt;hasInitializer();</div>
1495
- <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; });</div>
1496
- <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* rep =</div>
1497
- <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; repIt != globals.end()</div>
1498
- <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; ? *repIt</div>
1499
- <div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="comment">// When there is no initializer, just pick the first one.</span></div>
1500
- <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; : (assert(!globals.empty() &amp;&amp; <span class="stringliteral">&quot;Empty global set&quot;</span>),</div>
1501
- <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; *globals.begin());</div>
1502
- <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; </div>
1503
- <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <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="l01162"></a><span class="lineno"> 1162</span>&#160; {</div>
1505
- <div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>[cur] = rep;</div>
1506
- <div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; }</div>
1507
- <div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; }</div>
1508
- <div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;}</div>
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>&#160;{</div>
1470
+ <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, Set&lt;GlobalVariable*&gt;</a>&gt; NameToGlobalsMapTy;</div>
1471
+ <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; NameToGlobalsMapTy nameToGlobalsMap;</div>
1472
+ <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;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>&#160; {</div>
1474
+ <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
1475
+ <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : mod.globals())</div>
1476
+ <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; {</div>
1477
+ <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <span class="keywordflow">if</span> (global.hasPrivateLinkage())</div>
1478
+ <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <span class="keywordflow">continue</span>;</div>
1479
+ <div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <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>&#160; <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>&#160; <span class="keywordflow">continue</span>;</div>
1482
+ <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; nameToGlobalsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)].insert(&amp;global);</div>
1483
+ <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; }</div>
1484
+ <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; }</div>
1485
+ <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; </div>
1486
+ <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pair : nameToGlobalsMap)</div>
1487
+ <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; {</div>
1488
+ <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;GlobalVariable*&gt;</a> &amp;globals = pair.second;</div>
1489
+ <div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; </div>
1490
+ <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <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>&#160; std::find_if(globals.begin(), globals.end(),</div>
1492
+ <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; [](<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* g)</div>
1493
+ <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; {</div>
1494
+ <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; return g-&gt;hasInitializer();</div>
1495
+ <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; });</div>
1496
+ <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* rep =</div>
1497
+ <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; repIt != globals.end()</div>
1498
+ <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; ? *repIt</div>
1499
+ <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <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>&#160; : (assert(!globals.empty() &amp;&amp; <span class="stringliteral">&quot;Empty global set&quot;</span>),</div>
1501
+ <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; *globals.begin());</div>
1502
+ <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; </div>
1503
+ <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <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>&#160; {</div>
1505
+ <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <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>&#160; }</div>
1507
+ <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; }</div>
1508
+ <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;}</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&gt;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#l01484">1484</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1677
- <div class="fragment"><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;{</div>
1678
- <div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty-&gt;getNumElements();</div>
1679
- <div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty-&gt;getElementType();</div>
1680
- <div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div>
1681
- <div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; {</div>
1682
- <div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; totalElemNum *= aty-&gt;getNumElements();</div>
1683
- <div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; elemTy = aty-&gt;getElementType();</div>
1684
- <div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; }</div>
1685
- <div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; </div>
1686
- <div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; <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="l01495"></a><span class="lineno"> 1495</span>&#160; <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="l01496"></a><span class="lineno"> 1496</span>&#160; </div>
1689
- <div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; <span class="keywordflow">if</span> (totalElemNum == 0)</div>
1690
- <div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; {</div>
1691
- <div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, 0);</div>
1692
- <div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div>
1693
- <div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfType);</div>
1694
- <div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfType);</div>
1695
- <div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1696
- <div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; }</div>
1697
- <div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; </div>
1698
- <div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; <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="l01510"></a><span class="lineno"> 1510</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nfF = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1700
- <div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nfE = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1701
- <div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> j = 0; j &lt; nfF; j++)</div>
1702
- <div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; {</div>
1703
- <div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* fieldTy = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
1704
- <div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div>
1705
- <div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; }</div>
1706
- <div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; </div>
1707
- <div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> outArrayElemNum = ty-&gt;getNumElements();</div>
1708
- <div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; outArrayElemNum; ++i)</div>
1709
- <div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; {</div>
1710
- <div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <span class="keyword">auto</span> idx = (i * nfE * totalElemNum) / outArrayElemNum;</div>
1711
- <div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, idx);</div>
1712
- <div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; }</div>
1713
- <div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; </div>
1714
- <div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; totalElemNum; ++i)</div>
1715
- <div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; {</div>
1716
- <div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> j = 0; j &lt; nfE; ++j)</div>
1717
- <div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; {</div>
1718
- <div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* et = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[j];</div>
1719
- <div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(et);</div>
1720
- <div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; }</div>
1721
- <div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; }</div>
1722
- <div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; </div>
1723
- <div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &amp;&amp;</div>
1724
- <div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <span class="stringliteral">&quot;typeForArray size incorrect!!!&quot;</span>);</div>
1725
- <div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; stInfo-&gt;<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>&#160; </div>
1727
- <div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1728
- <div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;}</div>
1676
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01479">1479</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1677
+ <div class="fragment"><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;{</div>
1678
+ <div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty-&gt;getNumElements();</div>
1679
+ <div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty-&gt;getElementType();</div>
1680
+ <div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div>
1681
+ <div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; {</div>
1682
+ <div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; totalElemNum *= aty-&gt;getNumElements();</div>
1683
+ <div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; elemTy = aty-&gt;getElementType();</div>
1684
+ <div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; }</div>
1685
+ <div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; </div>
1686
+ <div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; <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="l01490"></a><span class="lineno"> 1490</span>&#160; <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="l01491"></a><span class="lineno"> 1491</span>&#160; </div>
1689
+ <div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; <span class="keywordflow">if</span> (totalElemNum == 0)</div>
1690
+ <div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; {</div>
1691
+ <div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, 0);</div>
1692
+ <div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div>
1693
+ <div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfType);</div>
1694
+ <div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfType);</div>
1695
+ <div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1696
+ <div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; }</div>
1697
+ <div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; </div>
1698
+ <div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; <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="l01505"></a><span class="lineno"> 1505</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nfF = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1700
+ <div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nfE = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1701
+ <div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> j = 0; j &lt; nfF; j++)</div>
1702
+ <div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; {</div>
1703
+ <div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* fieldTy = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
1704
+ <div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div>
1705
+ <div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; }</div>
1706
+ <div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; </div>
1707
+ <div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> outArrayElemNum = ty-&gt;getNumElements();</div>
1708
+ <div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; outArrayElemNum; ++i)</div>
1709
+ <div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; {</div>
1710
+ <div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; <span class="keyword">auto</span> idx = (i * nfE * totalElemNum) / outArrayElemNum;</div>
1711
+ <div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, idx);</div>
1712
+ <div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; }</div>
1713
+ <div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; </div>
1714
+ <div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; totalElemNum; ++i)</div>
1715
+ <div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; {</div>
1716
+ <div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> j = 0; j &lt; nfE; ++j)</div>
1717
+ <div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; {</div>
1718
+ <div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* et = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[j];</div>
1719
+ <div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(et);</div>
1720
+ <div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; }</div>
1721
+ <div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; }</div>
1722
+ <div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; </div>
1723
+ <div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &amp;&amp;</div>
1724
+ <div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <span class="stringliteral">&quot;typeForArray size incorrect!!!&quot;</span>);</div>
1725
+ <div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfF, nfE * totalElemNum);</div>
1726
+ <div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; </div>
1727
+ <div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1728
+ <div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;}</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#l00790">790</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1759
- <div class="fragment"><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;{</div>
1760
- <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *glob = mod-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
1761
- <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
1762
- <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">return</span>;</div>
1763
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; </div>
1764
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *ca = SVFUtil::dyn_cast&lt;ConstantArray&gt;(glob-&gt;getInitializer());</div>
1765
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
1766
- <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordflow">return</span>;</div>
1767
- <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; </div>
1768
- <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; ca-&gt;getNumOperands(); ++i)</div>
1769
- <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; {</div>
1770
- <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *structAn = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(ca-&gt;getOperand(i));</div>
1771
- <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span> || structAn-&gt;getNumOperands() == 0)</div>
1772
- <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">continue</span>;</div>
1773
- <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; </div>
1774
- <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="comment">// Check if the annotation is for a function</span></div>
1775
- <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">nullptr</span>;</div>
1776
- <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *annotateStr = <span class="keyword">nullptr</span>;</div>
1777
- <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0)))</div>
1778
- <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; {</div>
1779
- <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">if</span> (expr-&gt;getOpcode() == Instruction::BitCast &amp;&amp; SVFUtil::isa&lt;Function&gt;(expr-&gt;getOperand(0)))</div>
1780
- <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; fun = SVFUtil::cast&lt;Function&gt;(expr-&gt;getOperand(0));</div>
1781
- <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; </div>
1782
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *note = SVFUtil::cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(1));</div>
1783
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">if</span> (note-&gt;getOpcode() != Instruction::GetElementPtr)</div>
1784
- <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">continue</span>;</div>
1785
- <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; </div>
1786
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; annotateStr = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(note-&gt;getOperand(0));</div>
1787
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div>
1788
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordflow">else</span></div>
1789
- <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; {</div>
1790
- <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; fun = SVFUtil::dyn_cast&lt;Function&gt;(structAn-&gt;getOperand(0));</div>
1791
- <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; annotateStr = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(structAn-&gt;getOperand(1));</div>
1792
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div>
1793
- <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; </div>
1794
- <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">if</span> (!fun || annotateStr == <span class="keyword">nullptr</span> || !annotateStr-&gt;hasInitializer())</div>
1795
- <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">continue</span>;;</div>
1796
- <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; </div>
1797
- <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a> *data = SVFUtil::dyn_cast&lt;ConstantDataSequential&gt;(annotateStr-&gt;getInitializer());</div>
1798
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">if</span> (data &amp;&amp; data-&gt;isString())</div>
1799
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; {</div>
1800
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> annotation = data-&gt;getAsString().str();</div>
1801
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">if</span> (!annotation.empty())</div>
1802
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>[fun].push_back(annotation);</div>
1803
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; }</div>
1804
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; }</div>
1805
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;}</div>
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>&#160;{</div>
1760
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *glob = mod-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
1761
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
1762
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">return</span>;</div>
1763
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; </div>
1764
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *ca = SVFUtil::dyn_cast&lt;ConstantArray&gt;(glob-&gt;getInitializer());</div>
1765
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <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>&#160; <span class="keywordflow">return</span>;</div>
1767
+ <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; </div>
1768
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; ca-&gt;getNumOperands(); ++i)</div>
1769
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; {</div>
1770
+ <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *structAn = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(ca-&gt;getOperand(i));</div>
1771
+ <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span> || structAn-&gt;getNumOperands() == 0)</div>
1772
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">continue</span>;</div>
1773
+ <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; </div>
1774
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <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>&#160; <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>&#160; <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>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0)))</div>
1778
+ <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; {</div>
1779
+ <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordflow">if</span> (expr-&gt;getOpcode() == Instruction::BitCast &amp;&amp; SVFUtil::isa&lt;Function&gt;(expr-&gt;getOperand(0)))</div>
1780
+ <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; fun = SVFUtil::cast&lt;Function&gt;(expr-&gt;getOperand(0));</div>
1781
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; </div>
1782
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *note = SVFUtil::cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(1));</div>
1783
+ <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">if</span> (note-&gt;getOpcode() != Instruction::GetElementPtr)</div>
1784
+ <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">continue</span>;</div>
1785
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; </div>
1786
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; annotateStr = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(note-&gt;getOperand(0));</div>
1787
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; }</div>
1788
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">else</span></div>
1789
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; {</div>
1790
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; fun = SVFUtil::dyn_cast&lt;Function&gt;(structAn-&gt;getOperand(0));</div>
1791
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; annotateStr = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(structAn-&gt;getOperand(1));</div>
1792
+ <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div>
1793
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; </div>
1794
+ <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">if</span> (!fun || annotateStr == <span class="keyword">nullptr</span> || !annotateStr-&gt;hasInitializer())</div>
1795
+ <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keywordflow">continue</span>;;</div>
1796
+ <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; </div>
1797
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a> *data = SVFUtil::dyn_cast&lt;ConstantDataSequential&gt;(annotateStr-&gt;getInitializer());</div>
1798
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">if</span> (data &amp;&amp; data-&gt;isString())</div>
1799
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; {</div>
1800
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> annotation = data-&gt;getAsString().str();</div>
1801
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">if</span> (!annotation.empty())</div>
1802
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <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>&#160; }</div>
1804
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; }</div>
1805
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160;}</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#l01604">1604</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1838
- <div class="fragment"><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;{</div>
1839
- <div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; <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="l01608"></a><span class="lineno"> 1608</span>&#160; <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="l01609"></a><span class="lineno"> 1609</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, svfType, 0);</div>
1842
- <div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; </div>
1843
- <div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(svfType);</div>
1844
- <div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(svfType);</div>
1845
- <div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; stInfo-&gt;<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>&#160; </div>
1847
- <div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1848
- <div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;}</div>
1837
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01599">1599</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1838
+ <div class="fragment"><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;{</div>
1839
+ <div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; <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="l01603"></a><span class="lineno"> 1603</span>&#160; <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="l01604"></a><span class="lineno"> 1604</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, svfType, 0);</div>
1842
+ <div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; </div>
1843
+ <div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(svfType);</div>
1844
+ <div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(svfType);</div>
1845
+ <div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div>
1846
+ <div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; </div>
1847
+ <div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1848
+ <div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;}</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#l01547">1547</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1891
- <div class="fragment"><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;{</div>
1892
- <div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <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="l01552"></a><span class="lineno"> 1552</span>&#160; </div>
1894
- <div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div>
1895
- <div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; numFields = 0;</div>
1896
- <div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <span class="comment">// The offset when considering array stride info</span></div>
1897
- <div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> strideOffset = 0;</div>
1898
- <div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy : structTy-&gt;elements())</div>
1899
- <div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; {</div>
1900
- <div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; <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="l01560"></a><span class="lineno"> 1560</span>&#160; <span class="comment">// offset with int_32 (s32_t) is large enough and won&#39;t overflow</span></div>
1902
- <div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(numFields, elemSvfTy, strideOffset);</div>
1903
- <div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; </div>
1904
- <div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(elemTy))</div>
1905
- <div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; {</div>
1906
- <div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; <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="l01566"></a><span class="lineno"> 1566</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nfF = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1908
- <div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nfE = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1909
- <div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; <span class="comment">// Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div>
1910
- <div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> j = 0; j &lt; nfF; ++j)</div>
1911
- <div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; {</div>
1912
- <div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
1913
- <div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div>
1914
- <div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; }</div>
1915
- <div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; numFields += nfF;</div>
1916
- <div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; strideOffset += nfE;</div>
1917
- <div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> tpj = 0; tpj &lt; nfE; ++tpj)</div>
1918
- <div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; {</div>
1919
- <div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[tpj];</div>
1920
- <div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(ty);</div>
1921
- <div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; }</div>
1922
- <div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; </div>
1923
- <div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; }</div>
1924
- <div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; <span class="keywordflow">else</span></div>
1925
- <div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; {</div>
1926
- <div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; <span class="comment">// Simple type</span></div>
1927
- <div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; numFields += 1;</div>
1928
- <div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; strideOffset += 1;</div>
1929
- <div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfTy);</div>
1930
- <div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfTy);</div>
1931
- <div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; }</div>
1932
- <div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; }</div>
1933
- <div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; </div>
1934
- <div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &amp;&amp;</div>
1935
- <div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; <span class="stringliteral">&quot;typeForStruct size incorrect!&quot;</span>);</div>
1936
- <div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; stInfo-&gt;<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>&#160; </div>
1938
- <div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1939
- <div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;}</div>
1890
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01542">1542</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1891
+ <div class="fragment"><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;{</div>
1892
+ <div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; <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="l01547"></a><span class="lineno"> 1547</span>&#160; </div>
1894
+ <div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div>
1895
+ <div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; numFields = 0;</div>
1896
+ <div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <span class="comment">// The offset when considering array stride info</span></div>
1897
+ <div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> strideOffset = 0;</div>
1898
+ <div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy : structTy-&gt;elements())</div>
1899
+ <div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; {</div>
1900
+ <div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; <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="l01555"></a><span class="lineno"> 1555</span>&#160; <span class="comment">// offset with int_32 (s32_t) is large enough and won&#39;t overflow</span></div>
1902
+ <div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(numFields, elemSvfTy, strideOffset);</div>
1903
+ <div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; </div>
1904
+ <div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(elemTy))</div>
1905
+ <div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; {</div>
1906
+ <div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; <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="l01561"></a><span class="lineno"> 1561</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nfF = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1908
+ <div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nfE = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1909
+ <div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <span class="comment">// Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div>
1910
+ <div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> j = 0; j &lt; nfF; ++j)</div>
1911
+ <div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; {</div>
1912
+ <div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
1913
+ <div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div>
1914
+ <div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; }</div>
1915
+ <div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; numFields += nfF;</div>
1916
+ <div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; strideOffset += nfE;</div>
1917
+ <div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> tpj = 0; tpj &lt; nfE; ++tpj)</div>
1918
+ <div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; {</div>
1919
+ <div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[tpj];</div>
1920
+ <div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(ty);</div>
1921
+ <div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; }</div>
1922
+ <div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; </div>
1923
+ <div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; }</div>
1924
+ <div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <span class="keywordflow">else</span></div>
1925
+ <div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; {</div>
1926
+ <div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; <span class="comment">// Simple type</span></div>
1927
+ <div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; numFields += 1;</div>
1928
+ <div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; strideOffset += 1;</div>
1929
+ <div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfTy);</div>
1930
+ <div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfTy);</div>
1931
+ <div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; }</div>
1932
+ <div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; }</div>
1933
+ <div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; </div>
1934
+ <div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &amp;&amp;</div>
1935
+ <div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; <span class="stringliteral">&quot;typeForStruct size incorrect!&quot;</span>);</div>
1936
+ <div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(numFields,strideOffset);</div>
1937
+ <div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; </div>
1938
+ <div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1939
+ <div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;}</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#l01390">1390</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1970
- <div class="fragment"><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;{</div>
1971
- <div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div>
1972
- <div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; <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="l01394"></a><span class="lineno"> 1394</span>&#160; {</div>
1974
- <div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; <span class="keywordflow">return</span> tit-&gt;second;</div>
1975
- <div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; }</div>
1976
- <div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; <span class="comment">// No such StInfo for T, create it now.</span></div>
1977
- <div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo;</div>
1978
- <div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div>
1979
- <div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; {</div>
1980
- <div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div>
1981
- <div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; }</div>
1982
- <div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; <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&lt;StructType&gt;(T))</div>
1983
- <div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; {</div>
1984
- <div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nf;</div>
1985
- <div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">collectStructInfo</a>(sty, nf);</div>
1986
- <div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; <span class="keywordflow">if</span> (nf &gt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div>
1987
- <div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; {</div>
1988
- <div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<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="l01410"></a><span class="lineno"> 1410</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div>
1990
- <div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; }</div>
1991
- <div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; }</div>
1992
- <div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <span class="keywordflow">else</span></div>
1993
- <div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; {</div>
1994
- <div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a>(T);</div>
1995
- <div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; }</div>
1996
- <div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <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>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<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>&#160; <span class="keywordflow">return</span> stInfo;</div>
1999
- <div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;}</div>
1969
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01385">1385</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1970
+ <div class="fragment"><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;{</div>
1971
+ <div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div>
1972
+ <div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; <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="l01389"></a><span class="lineno"> 1389</span>&#160; {</div>
1974
+ <div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; <span class="keywordflow">return</span> tit-&gt;second;</div>
1975
+ <div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; }</div>
1976
+ <div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; <span class="comment">// No such StInfo for T, create it now.</span></div>
1977
+ <div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo;</div>
1978
+ <div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div>
1979
+ <div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; {</div>
1980
+ <div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div>
1981
+ <div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; }</div>
1982
+ <div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; <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&lt;StructType&gt;(T))</div>
1983
+ <div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; {</div>
1984
+ <div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> nf;</div>
1985
+ <div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">collectStructInfo</a>(sty, nf);</div>
1986
+ <div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <span class="keywordflow">if</span> (nf &gt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div>
1987
+ <div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; {</div>
1988
+ <div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<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="l01405"></a><span class="lineno"> 1405</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div>
1990
+ <div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; }</div>
1991
+ <div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; }</div>
1992
+ <div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; <span class="keywordflow">else</span></div>
1993
+ <div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; {</div>
1994
+ <div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a>(T);</div>
1995
+ <div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; }</div>
1996
+ <div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.emplace(T, stInfo);</div>
1997
+ <div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a72be32d606db86090067159de44e01ec">addStInfo</a>(stInfo);</div>
1998
+ <div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1999
+ <div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;}</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>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func-&gt;getFunctionType())),</div>
2124
2124
  <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; func-&gt;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>&#160; func-&gt;hasAddressTaken(), func-&gt;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>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(func-&gt;getName().str());</div>
2127
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a8a0fe93cc13b799fc28540fb312573c6">addFunctionSet</a>(svfFunc);</div>
2128
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <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>
2129
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a2731567cd10e2c499c812c33d01a412e">setAnnotations</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>[func]);</div>
2130
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab671d5bb9ca5761e2b438a4d4da229cf">addFunctionMap</a>(func, svfFunc);</div>
2131
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; </div>
2132
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>&amp; arg : func-&gt;args())</div>
2133
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div>
2134
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <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>
2135
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(arg.getType()), svfFunc, arg.getArgNo(),</div>
2136
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">LLVMUtil::isArgOfUncalledFunction</a>(&amp;arg));</div>
2137
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="comment">// Setting up arg name</span></div>
2138
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">if</span> (arg.hasName())</div>
2139
- <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; svfarg-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(arg.getName().str());</div>
2140
- <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">else</span></div>
2141
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; svfarg-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(std::to_string(arg.getArgNo()));</div>
2142
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; </div>
2143
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ad865b8440a6e0d5d212798d2213e1e9c">addArgument</a>(svfarg);</div>
2144
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5595ec3f7582934dc499770825bf5373">addArgumentMap</a>(&amp;arg, svfarg);</div>
2145
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div>
2146
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; </div>
2147
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>&amp; bb : *func)</div>
2148
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div>
2149
- <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB =</div>
2150
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <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>
2151
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span> (bb.hasName())</div>
2152
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; svfBB-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(bb.getName().str());</div>
2153
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">addBasicBlock</a>(svfBB);</div>
2154
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">addBasicBlockMap</a>(&amp;bb, svfBB);</div>
2155
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&amp; inst : bb)</div>
2156
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; {</div>
2157
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <span class="keyword">nullptr</span>;</div>
2158
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;inst))</div>
2159
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; {</div>
2160
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aab1dce633f9a03796c208b6fba2bd2b4">cppUtil::isVirtualCallSite</a>(call))</div>
2161
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>(</div>
2126
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<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>&#160; <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>&#160; svfFunc-&gt;<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>&#160; <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>&#160; </div>
2131
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>&amp; arg : func-&gt;args())</div>
2132
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div>
2133
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <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>&#160; <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>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">LLVMUtil::isArgOfUncalledFunction</a>(&amp;arg));</div>
2136
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="comment">// Setting up arg name</span></div>
2137
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span> (!arg.hasName())</div>
2138
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; svfarg-&gt;<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>&#160; </div>
2140
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; svfFunc-&gt;<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>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5595ec3f7582934dc499770825bf5373">addArgumentMap</a>(&amp;arg, svfarg);</div>
2142
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
2143
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; </div>
2144
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>&amp; bb : *func)</div>
2145
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div>
2146
+ <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <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>&#160; <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>&#160; svfFunc-&gt;<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>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">addBasicBlockMap</a>(&amp;bb, svfBB);</div>
2150
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&amp; inst : bb)</div>
2151
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div>
2152
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <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>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;inst))</div>
2154
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div>
2155
+ <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <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>&#160; 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>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call-&gt;getType()), svfBB,</div>
2158
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; call-&gt;getFunctionType()-&gt;isVarArg(),</div>
2159
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; inst.isTerminator());</div>
2160
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">else</span></div>
2161
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; 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>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call-&gt;getType()), svfBB,</div>
2163
2163
  <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; call-&gt;getFunctionType()-&gt;isVarArg(),</div>
2164
2164
  <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; inst.isTerminator());</div>
2165
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">else</span></div>
2166
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>(</div>
2167
- <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call-&gt;getType()), svfBB,</div>
2168
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; call-&gt;getFunctionType()-&gt;isVarArg(),</div>
2169
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; inst.isTerminator());</div>
2170
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</div>
2171
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">else</span></div>
2172
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div>
2173
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; svfInst =</div>
2174
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <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>
2175
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; svfBB, inst.isTerminator(),</div>
2176
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; SVFUtil::isa&lt;ReturnInst&gt;(inst));</div>
2177
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div>
2178
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; </div>
2179
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; svfBB-&gt;<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>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">addInstructionMap</a>(&amp;inst, svfInst);</div>
2181
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div>
2182
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div>
2183
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;}</div>
2165
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div>
2166
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">else</span></div>
2167
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div>
2168
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; svfInst =</div>
2169
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <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>&#160; svfBB, inst.isTerminator(),</div>
2171
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; SVFUtil::isa&lt;ReturnInst&gt;(inst));</div>
2172
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div>
2173
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; </div>
2174
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; svfBB-&gt;<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>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">addInstructionMap</a>(&amp;inst, svfInst);</div>
2176
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div>
2177
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div>
2178
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;}</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#l01188">1188</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2204
- <div class="fragment"><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;{</div>
2205
- <div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
2206
- <div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; {</div>
2207
- <div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> moduleName = mod.getName().str();</div>
2208
- <div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> OutputFilename;</div>
2209
- <div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; std::size_t pos = moduleName.rfind(<span class="charliteral">&#39;.&#39;</span>);</div>
2210
- <div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <span class="keywordflow">if</span> (pos != std::string::npos)</div>
2211
- <div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; OutputFilename = moduleName.substr(0, pos) + suffix;</div>
2212
- <div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keywordflow">else</span></div>
2213
- <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; OutputFilename = moduleName + suffix;</div>
2214
- <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; </div>
2215
- <div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; std::error_code EC;</div>
2216
- <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <a class="code" href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">raw_fd_ostream</a> OS(OutputFilename.c_str(), EC, llvm::sys::fs::OF_None);</div>
2217
- <div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; </div>
2218
- <div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 7)</span></div>
2219
- <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; WriteBitcodeToFile(mod, OS);</div>
2220
- <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;<span class="preprocessor">#else</span></div>
2221
- <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; WriteBitcodeToFile(&amp;mod, OS);</div>
2222
- <div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;<span class="preprocessor">#endif</span></div>
2223
- <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; </div>
2224
- <div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; OS.flush();</div>
2225
- <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; }</div>
2226
- <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;}</div>
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>&#160;{</div>
2200
+ <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; 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>&#160; {</div>
2202
+ <div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <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>&#160; <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>&#160; std::size_t pos = moduleName.rfind(<span class="charliteral">&#39;.&#39;</span>);</div>
2205
+ <div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="keywordflow">if</span> (pos != std::string::npos)</div>
2206
+ <div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; OutputFilename = moduleName.substr(0, pos) + suffix;</div>
2207
+ <div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keywordflow">else</span></div>
2208
+ <div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; OutputFilename = moduleName + suffix;</div>
2209
+ <div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; </div>
2210
+ <div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; std::error_code EC;</div>
2211
+ <div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <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>&#160; </div>
2213
+ <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 7)</span></div>
2214
+ <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; WriteBitcodeToFile(mod, OS);</div>
2215
+ <div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;<span class="preprocessor">#else</span></div>
2216
+ <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; WriteBitcodeToFile(&amp;mod, OS);</div>
2217
+ <div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;<span class="preprocessor">#endif</span></div>
2218
+ <div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; </div>
2219
+ <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; OS.flush();</div>
2220
+ <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; }</div>
2221
+ <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;}</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#l00607">607</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2420
- <div class="fragment"><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;{</div>
2421
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="comment">// This function is used to extract constructor and destructor functions</span></div>
2422
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="comment">// sorted by their priority from @llvm.global_ctors or @llvm.global_dtors.</span></div>
2423
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="comment">// For example, given following @llvm.global_ctors, the returning sorted</span></div>
2424
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="comment">// function list should be [ctor3, ctor1, ctor2].</span></div>
2425
- <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2426
- <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="comment">// ; Each struct in the array is {priority, function, associated data}</span></div>
2427
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="comment">//</span></div>
2428
- <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="comment">// @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }]</span></div>
2429
- <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="comment">// [{ i32, void ()*, i8* } { i32 1234, void ()* @ctor1.cpp, i8* null },</span></div>
2430
- <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 2345, void ()* @ctor2.cpp, i8* null },</span></div>
2431
- <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 345, void ()* @ctor3.cpp, i8* null }]</span></div>
2432
- <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2433
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="comment">// TODO: According to LLVM language reference, if the third field is</span></div>
2434
- <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="comment">// non-null, and points to a global variable or function, the initializer</span></div>
2435
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="comment">// function will only run if the associated data from the current module is</span></div>
2436
- <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="comment">// not discarded. However the associated data is currently ignored.</span></div>
2437
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; </div>
2438
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; </div>
2439
- <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="comment">// This class is used for the priority queue that sorts the functions by</span></div>
2440
- <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="comment">// their priority. Each object of this class stands for an item in the</span></div>
2441
- <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="comment">// function array.</span></div>
2442
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keyword">class </span>LLVMGlobalFunction</div>
2443
- <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; {</div>
2444
- <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keyword">public</span>:</div>
2445
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> priority;</div>
2446
- <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func;</div>
2447
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; LLVMGlobalFunction() {};</div>
2448
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; 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>
2449
- <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; : priority(_priority), func(_func) {};</div>
2450
- <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">operator&gt;</a>(<span class="keyword">const</span> LLVMGlobalFunction &amp;other)<span class="keyword"> const</span></div>
2451
- <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;<span class="keyword"> </span>{</div>
2452
- <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">if</span> (priority != other.priority)</div>
2453
- <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; {</div>
2454
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">return</span> priority &gt; other.priority;</div>
2455
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; }</div>
2456
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">else</span></div>
2457
- <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; {</div>
2458
- <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">return</span> func &gt; other.func;</div>
2459
- <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; }</div>
2460
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div>
2461
- <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; };</div>
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>&#160;{</div>
2416
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <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>&#160; <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>&#160; <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>&#160; <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>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2421
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <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>&#160; <span class="comment">//</span></div>
2423
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <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>&#160; <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>&#160; <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>&#160; <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>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2428
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <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>&#160; <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>&#160; <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>&#160; <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>&#160; </div>
2433
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; </div>
2434
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <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>&#160; <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>&#160; <span class="comment">// function array.</span></div>
2437
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keyword">class </span>LLVMGlobalFunction</div>
2438
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; {</div>
2439
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keyword">public</span>:</div>
2440
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <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>&#160; <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>&#160; LLVMGlobalFunction() {};</div>
2443
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; 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>&#160; : priority(_priority), func(_func) {};</div>
2445
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">operator&gt;</a>(<span class="keyword">const</span> LLVMGlobalFunction &amp;other)<span class="keyword"> const</span></div>
2446
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;<span class="keyword"> </span>{</div>
2447
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">if</span> (priority != other.priority)</div>
2448
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; {</div>
2449
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">return</span> priority &gt; other.priority;</div>
2450
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; }</div>
2451
+ <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">else</span></div>
2452
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; {</div>
2453
+ <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">return</span> func &gt; other.func;</div>
2454
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; }</div>
2455
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; }</div>
2456
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; };</div>
2457
+ <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; </div>
2458
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; std::priority_queue&lt;LLVMGlobalFunction, std::vector&lt;LLVMGlobalFunction&gt;,</div>
2459
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; greater&lt;LLVMGlobalFunction&gt;&gt;</div>
2460
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; queue;</div>
2461
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; std::vector&lt;const Function* &gt; result;</div>
2462
2462
  <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; </div>
2463
- <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; std::priority_queue&lt;LLVMGlobalFunction, std::vector&lt;LLVMGlobalFunction&gt;,</div>
2464
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; greater&lt;LLVMGlobalFunction&gt;&gt;</div>
2465
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; queue;</div>
2466
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; std::vector&lt;const Function* &gt; result;</div>
2467
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; </div>
2468
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="comment">// The @llvm.global_ctors/dtors global variable is an array of struct. Each</span></div>
2469
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="comment">// struct has three fields: {i32 priority, void ()* @ctor/dtor, i8* @data}.</span></div>
2470
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="comment">// First get the array here.</span></div>
2471
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *globalFuncArray =</div>
2472
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; SVFUtil::dyn_cast&lt;ConstantArray&gt;(global-&gt;getInitializer()))</div>
2473
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {</div>
2474
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="comment">// Get each struct in the array.</span></div>
2475
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; globalFuncArray-&gt;getNumOperands(); ++i)</div>
2476
- <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div>
2477
- <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">if</span> (</div>
2478
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *globalFuncItem =</div>
2479
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; SVFUtil::dyn_cast&lt;ConstantStruct&gt;(</div>
2480
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; globalFuncArray-&gt;getOperand(i)))</div>
2481
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; {</div>
2482
- <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; </div>
2483
- <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="comment">// Extract priority and function from the struct</span></div>
2484
- <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* priority = SVFUtil::dyn_cast&lt;ConstantInt&gt;(</div>
2485
- <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; globalFuncItem-&gt;getOperand(0));</div>
2486
- <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(</div>
2487
- <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; globalFuncItem-&gt;getOperand(1));</div>
2488
- <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; </div>
2489
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">if</span> (priority &amp;&amp; func)</div>
2490
- <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; {</div>
2491
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; queue.push(LLVMGlobalFunction(priority</div>
2492
- <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; -&gt;getZExtValue(),</div>
2493
- <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; func));</div>
2494
- <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; }</div>
2495
- <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div>
2496
- <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div>
2497
- <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div>
2498
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; </div>
2499
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="comment">// Generate a sorted vector of functions from the priority queue.</span></div>
2500
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">while</span> (!queue.empty())</div>
2501
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; {</div>
2502
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; result.push_back(queue.top().func);</div>
2503
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; queue.pop();</div>
2504
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; }</div>
2505
- <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">return</span> result;</div>
2506
- <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;}</div>
2463
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <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>&#160; <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>&#160; <span class="comment">// First get the array here.</span></div>
2466
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <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>&#160; SVFUtil::dyn_cast&lt;ConstantArray&gt;(global-&gt;getInitializer()))</div>
2468
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; {</div>
2469
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="comment">// Get each struct in the array.</span></div>
2470
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; globalFuncArray-&gt;getNumOperands(); ++i)</div>
2471
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; {</div>
2472
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">if</span> (</div>
2473
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <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>&#160; SVFUtil::dyn_cast&lt;ConstantStruct&gt;(</div>
2475
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; globalFuncArray-&gt;getOperand(i)))</div>
2476
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div>
2477
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; </div>
2478
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <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>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* priority = SVFUtil::dyn_cast&lt;ConstantInt&gt;(</div>
2480
+ <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; globalFuncItem-&gt;getOperand(0));</div>
2481
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(</div>
2482
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; globalFuncItem-&gt;getOperand(1));</div>
2483
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; </div>
2484
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">if</span> (priority &amp;&amp; func)</div>
2485
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; {</div>
2486
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; queue.push(LLVMGlobalFunction(priority</div>
2487
+ <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; -&gt;getZExtValue(),</div>
2488
+ <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; func));</div>
2489
+ <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; }</div>
2490
+ <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; }</div>
2491
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; }</div>
2492
+ <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div>
2493
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; </div>
2494
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <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>&#160; <span class="keywordflow">while</span> (!queue.empty())</div>
2496
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; {</div>
2497
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; result.push_back(queue.top().func);</div>
2498
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; queue.pop();</div>
2499
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; }</div>
2500
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">return</span> result;</div>
2501
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;}</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#l01363">1363</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2591
- <div class="fragment"><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;{</div>
2592
- <div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; <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>
2593
- <div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; {</div>
2594
- <div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; <span class="keywordflow">if</span> (it-&gt;second == T)</div>
2595
- <div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; <span class="keywordflow">return</span> it-&gt;first;</div>
2596
- <div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; }</div>
2597
- <div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;can&#39;t find the corresponding LLVM Type&quot;</span>);</div>
2598
- <div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; abort();</div>
2599
- <div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;}</div>
2585
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01358">1358</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2586
+ <div class="fragment"><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;{</div>
2587
+ <div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <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="l01361"></a><span class="lineno"> 1361</span>&#160; {</div>
2589
+ <div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <span class="keywordflow">if</span> (it-&gt;second == T)</div>
2590
+ <div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <span class="keywordflow">return</span> it-&gt;first;</div>
2591
+ <div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; }</div>
2592
+ <div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;can&#39;t find the corresponding LLVM Type&quot;</span>);</div>
2593
+ <div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; abort();</div>
2594
+ <div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;}</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#l01305">1305</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2786
- <div class="fragment"><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;{</div>
2787
- <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div>
2788
- <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
2789
- <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; {</div>
2790
- <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2791
- <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; }</div>
2792
- <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <span class="keywordflow">else</span></div>
2793
- <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; {</div>
2794
- <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; <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-&gt;getType()));</div>
2795
- <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfoc);</div>
2796
- <div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; <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>&#160; <span class="keywordflow">return</span> svfoc;</div>
2798
- <div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; }</div>
2799
- <div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;}</div>
2780
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01300">1300</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2781
+ <div class="fragment"><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;{</div>
2782
+ <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div>
2783
+ <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <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="l01304"></a><span class="lineno"> 1304</span>&#160; {</div>
2785
+ <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2786
+ <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; }</div>
2787
+ <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <span class="keywordflow">else</span></div>
2788
+ <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; {</div>
2789
+ <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <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-&gt;getType()));</div>
2790
+ <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfoc);</div>
2791
+ <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div>
2792
+ <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <span class="keywordflow">return</span> svfoc;</div>
2793
+ <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; }</div>
2794
+ <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;}</div>
2800
2795
  </div><!-- fragment -->
2801
2796
  </div>
2802
2797
  </div>
@@ -2883,68 +2878,66 @@ 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 &lt;=64 1 : cint has value from getSExtValue() bitwidth &gt;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#l01239">1239</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2887
- <div class="fragment"><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;{</div>
2888
- <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(cd);</div>
2889
- <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
2890
- <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; {</div>
2891
- <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; assert(SVFUtil::isa&lt;SVFConstantData&gt;(it-&gt;second) &amp;&amp; <span class="stringliteral">&quot;not a SVFConstantData type!&quot;</span>);</div>
2892
- <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;SVFConstantData&gt;(it-&gt;second);</div>
2893
- <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; }</div>
2894
- <div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <span class="keywordflow">else</span></div>
2895
- <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; {</div>
2896
- <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>* svfcd = <span class="keyword">nullptr</span>;</div>
2897
- <div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* cint = SVFUtil::dyn_cast&lt;ConstantInt&gt;(cd))</div>
2898
- <div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; {</div>
2899
- <div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keywordflow">if</span>(cint-&gt;getBitWidth() == 1)</div>
2900
- <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; 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-&gt;getType()), cint-&gt;getZExtValue(), cint-&gt;getZExtValue());</div>
2901
- <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cint-&gt;getBitWidth() &lt;= 64 &amp;&amp; cint-&gt;getBitWidth() &gt; 1)</div>
2902
- <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; 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-&gt;getType()), cint-&gt;getZExtValue(), cint-&gt;getSExtValue());</div>
2903
- <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; <span class="keywordflow">else</span></div>
2904
- <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; 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-&gt;getType()), 0, 0);</div>
2905
- <div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; }</div>
2906
- <div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; <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&lt;ConstantFP&gt;(cd))</div>
2907
- <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; {</div>
2908
- <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <span class="keywordtype">double</span> dval = 0;</div>
2909
- <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="comment">// TODO: Why only double is considered? What about float?</span></div>
2910
- <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <span class="keywordflow">if</span> (cfp-&gt;isNormalFP())</div>
2911
- <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; {</div>
2912
- <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; <span class="keywordflow">if</span> (&amp;cfp-&gt;getValueAPF().getSemantics()== &amp;llvm::APFloatBase::IEEEsingle())</div>
2913
- <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; {</div>
2914
- <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; dval = cfp-&gt;getValueAPF().convertToFloat();</div>
2915
- <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; }</div>
2916
- <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (&amp;cfp-&gt;getValueAPF().getSemantics()== &amp;llvm::APFloatBase::IEEEdouble())</div>
2917
- <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; {</div>
2918
- <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; dval = cfp-&gt;getValueAPF().convertToDouble();</div>
2919
- <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; }</div>
2920
- <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <span class="keywordflow">else</span></div>
2921
- <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; {</div>
2922
- <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; assert (<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Unsupported floating point type&quot;</span>);</div>
2923
- <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; abort();</div>
2924
- <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; }</div>
2925
- <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; }</div>
2926
- <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="keywordflow">else</span></div>
2927
- <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; {</div>
2928
- <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; <span class="comment">// other cfp type, like isZero(), isInfinity(), isNegative(), etc.</span></div>
2929
- <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="comment">// do nothing</span></div>
2930
- <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; }</div>
2931
- <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; 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-&gt;getType()), dval);</div>
2932
- <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; }</div>
2933
- <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantPointerNull&gt;(cd))</div>
2934
- <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; 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-&gt;getType()));</div>
2935
- <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UndefValue&gt;(cd))</div>
2936
- <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; 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-&gt;getType()));</div>
2937
- <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keywordflow">else</span></div>
2938
- <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; 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-&gt;getType()));</div>
2939
- <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; </div>
2940
- <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keywordflow">if</span> (cd-&gt;hasName())</div>
2941
- <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; svfcd-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(cd-&gt;getName().str());</div>
2942
- <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; </div>
2943
- <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfcd);</div>
2944
- <div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div>
2945
- <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keywordflow">return</span> svfcd;</div>
2946
- <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; }</div>
2947
- <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;}</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>&#160;{</div>
2883
+ <div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; 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>&#160; <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>&#160; {</div>
2886
+ <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; assert(SVFUtil::isa&lt;SVFConstantData&gt;(it-&gt;second) &amp;&amp; <span class="stringliteral">&quot;not a SVFConstantData type!&quot;</span>);</div>
2887
+ <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;SVFConstantData&gt;(it-&gt;second);</div>
2888
+ <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; }</div>
2889
+ <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="keywordflow">else</span></div>
2890
+ <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; {</div>
2891
+ <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <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>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* cint = SVFUtil::dyn_cast&lt;ConstantInt&gt;(cd))</div>
2893
+ <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; {</div>
2894
+ <div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; <span class="keywordflow">if</span>(cint-&gt;getBitWidth() == 1)</div>
2895
+ <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; 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-&gt;getType()), cint-&gt;getZExtValue(), cint-&gt;getZExtValue());</div>
2896
+ <div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cint-&gt;getBitWidth() &lt;= 64 &amp;&amp; cint-&gt;getBitWidth() &gt; 1)</div>
2897
+ <div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; 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-&gt;getType()), cint-&gt;getZExtValue(), cint-&gt;getSExtValue());</div>
2898
+ <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <span class="keywordflow">else</span></div>
2899
+ <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; 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-&gt;getType()), 0, 0);</div>
2900
+ <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; }</div>
2901
+ <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; <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&lt;ConstantFP&gt;(cd))</div>
2902
+ <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; {</div>
2903
+ <div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; <span class="keywordtype">double</span> dval = 0;</div>
2904
+ <div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; <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>&#160; <span class="keywordflow">if</span> (cfp-&gt;isNormalFP())</div>
2906
+ <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; {</div>
2907
+ <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="keywordflow">if</span> (&amp;cfp-&gt;getValueAPF().getSemantics()== &amp;llvm::APFloatBase::IEEEsingle())</div>
2908
+ <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; {</div>
2909
+ <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; dval = cfp-&gt;getValueAPF().convertToFloat();</div>
2910
+ <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; }</div>
2911
+ <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (&amp;cfp-&gt;getValueAPF().getSemantics()== &amp;llvm::APFloatBase::IEEEdouble())</div>
2912
+ <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; {</div>
2913
+ <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; dval = cfp-&gt;getValueAPF().convertToDouble();</div>
2914
+ <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; }</div>
2915
+ <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; <span class="keywordflow">else</span></div>
2916
+ <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; {</div>
2917
+ <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; assert (<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Unsupported floating point type&quot;</span>);</div>
2918
+ <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; abort();</div>
2919
+ <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; }</div>
2920
+ <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; }</div>
2921
+ <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; <span class="keywordflow">else</span></div>
2922
+ <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; {</div>
2923
+ <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="comment">// other cfp type, like isZero(), isInfinity(), isNegative(), etc.</span></div>
2924
+ <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="comment">// do nothing</span></div>
2925
+ <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; }</div>
2926
+ <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; 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-&gt;getType()), dval);</div>
2927
+ <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; }</div>
2928
+ <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantPointerNull&gt;(cd))</div>
2929
+ <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; 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-&gt;getType()));</div>
2930
+ <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UndefValue&gt;(cd))</div>
2931
+ <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; 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-&gt;getType()));</div>
2932
+ <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <span class="keywordflow">else</span></div>
2933
+ <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; 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-&gt;getType()));</div>
2934
+ <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; </div>
2935
+ <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; </div>
2936
+ <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfcd);</div>
2937
+ <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div>
2938
+ <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keywordflow">return</span> svfcd;</div>
2939
+ <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; }</div>
2940
+ <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;}</div>
2948
2941
  </div><!-- fragment -->
2949
2942
  </div>
2950
2943
  </div>
@@ -3138,24 +3131,24 @@ Friends</h2></td></tr>
3138
3131
  </table>
3139
3132
  </div><div class="memdoc">
3140
3133
 
3141
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01321">1321</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3142
- <div class="fragment"><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;{</div>
3143
- <div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div>
3144
- <div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div>
3145
- <div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; {</div>
3146
- <div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
3147
- <div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; }</div>
3148
- <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; <span class="keywordflow">else</span></div>
3149
- <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; {</div>
3150
- <div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov =</div>
3151
- <div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; SVFUtil::isa&lt;MetadataAsValue&gt;(ov)</div>
3152
- <div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; ? <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-&gt;getType()))</div>
3153
- <div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; : new <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov-&gt;getType()));</div>
3154
- <div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a48d7f0643bb228701dcabb88ef541fca">addOtherValue</a>(svfov);</div>
3155
- <div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; <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>&#160; <span class="keywordflow">return</span> svfov;</div>
3157
- <div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; }</div>
3158
- <div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;}</div>
3134
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01316">1316</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3135
+ <div class="fragment"><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;{</div>
3136
+ <div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div>
3137
+ <div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div>
3138
+ <div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; {</div>
3139
+ <div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
3140
+ <div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; }</div>
3141
+ <div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; <span class="keywordflow">else</span></div>
3142
+ <div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; {</div>
3143
+ <div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov =</div>
3144
+ <div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; SVFUtil::isa&lt;MetadataAsValue&gt;(ov)</div>
3145
+ <div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; ? <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-&gt;getType()))</div>
3146
+ <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; : new <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov-&gt;getType()));</div>
3147
+ <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a48d7f0643bb228701dcabb88ef541fca">addOtherValue</a>(svfov);</div>
3148
+ <div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div>
3149
+ <div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <span class="keywordflow">return</span> svfov;</div>
3150
+ <div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; }</div>
3151
+ <div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;}</div>
3159
3152
  </div><!-- fragment -->
3160
3153
  </div>
3161
3154
  </div>
@@ -3178,18 +3171,18 @@ Friends</h2></td></tr>
3178
3171
  <p>Get or create <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> and typeinfo. </p>
3179
3172
  <p>Get or create <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> and typeinfo </p>
3180
3173
 
3181
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01377">1377</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3182
- <div class="fragment"><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;{</div>
3183
- <div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; assert(T &amp;&amp; <span class="stringliteral">&quot;SVFType should not be null&quot;</span>);</div>
3184
- <div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div>
3185
- <div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div>
3186
- <div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
3187
- <div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; </div>
3188
- <div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">addSVFTypeInfo</a>(T);</div>
3189
- <div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(T);</div>
3190
- <div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; svfType-&gt;<a class="code" href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">setTypeInfo</a>(stinfo);</div>
3191
- <div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; <span class="keywordflow">return</span> svfType;</div>
3192
- <div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;}</div>
3174
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01372">1372</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3175
+ <div class="fragment"><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;{</div>
3176
+ <div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; assert(T &amp;&amp; <span class="stringliteral">&quot;SVFType should not be null&quot;</span>);</div>
3177
+ <div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div>
3178
+ <div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div>
3179
+ <div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
3180
+ <div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; </div>
3181
+ <div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">addSVFTypeInfo</a>(T);</div>
3182
+ <div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(T);</div>
3183
+ <div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; svfType-&gt;<a class="code" href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">setTypeInfo</a>(stinfo);</div>
3184
+ <div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; <span class="keywordflow">return</span> svfType;</div>
3185
+ <div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;}</div>
3193
3186
  </div><!-- fragment -->
3194
3187
  </div>
3195
3188
  </div>
@@ -3209,28 +3202,28 @@ Friends</h2></td></tr>
3209
3202
  </table>
3210
3203
  </div><div class="memdoc">
3211
3204
 
3212
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01340">1340</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3213
- <div class="fragment"><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;{</div>
3214
- <div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = SVFUtil::dyn_cast&lt;Function&gt;(value))</div>
3215
- <div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
3216
- <div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(value))</div>
3217
- <div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
3218
- <div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; <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&lt;Instruction&gt;(value))</div>
3219
- <div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div>
3220
- <div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast&lt;Argument&gt;(value))</div>
3221
- <div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div>
3222
- <div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; <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&lt;Constant&gt;(value))</div>
3223
- <div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; {</div>
3224
- <div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* cd = SVFUtil::dyn_cast&lt;ConstantData&gt;(cons))</div>
3225
- <div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div>
3226
- <div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; <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&lt;GlobalValue&gt;(cons))</div>
3227
- <div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div>
3228
- <div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; <span class="keywordflow">else</span></div>
3229
- <div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div>
3230
- <div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; }</div>
3231
- <div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <span class="keywordflow">else</span></div>
3232
- <div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div>
3233
- <div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;}</div>
3205
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01335">1335</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3206
+ <div class="fragment"><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;{</div>
3207
+ <div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = SVFUtil::dyn_cast&lt;Function&gt;(value))</div>
3208
+ <div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
3209
+ <div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(value))</div>
3210
+ <div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
3211
+ <div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; <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&lt;Instruction&gt;(value))</div>
3212
+ <div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div>
3213
+ <div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast&lt;Argument&gt;(value))</div>
3214
+ <div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div>
3215
+ <div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; <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&lt;Constant&gt;(value))</div>
3216
+ <div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; {</div>
3217
+ <div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* cd = SVFUtil::dyn_cast&lt;ConstantData&gt;(cons))</div>
3218
+ <div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div>
3219
+ <div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; <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&lt;GlobalValue&gt;(cons))</div>
3220
+ <div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div>
3221
+ <div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; <span class="keywordflow">else</span></div>
3222
+ <div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div>
3223
+ <div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; }</div>
3224
+ <div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; <span class="keywordflow">else</span></div>
3225
+ <div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div>
3226
+ <div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;}</div>
3234
3227
  </div><!-- fragment -->
3235
3228
  </div>
3236
3229
  </div>
@@ -3396,74 +3389,74 @@ Friends</h2></td></tr>
3396
3389
  </table>
3397
3390
  </div><div class="memdoc">
3398
3391
 
3399
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00385">385</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3400
- <div class="fragment"><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;{</div>
3401
- <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div>
3402
- <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">return</span>;</div>
3403
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="comment">//process and stored dt &amp; df</span></div>
3404
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div>
3405
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a> df;</div>
3406
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; dt.recalculate(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp;<span class="keyword">&gt;</span>(*fun));</div>
3407
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; df.analyze(dt);</div>
3408
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a> loopInfo = <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>(dt);</div>
3409
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a> pdt = <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp;<span class="keyword">&gt;</span>(*fun));</div>
3410
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = svffun-&gt;getLoopAndDomInfo();</div>
3411
- <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; </div>
3412
- <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFBasicBlock*,Set&lt;const SVFBasicBlock*&gt;</a>&gt; &amp; dfBBsMap = ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae37546be7304c66b4eca2654d995eaa7">getDomFrontierMap</a>();</div>
3413
- <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">for</span> (DominanceFrontierBase::const_iterator dfIter = df.begin(), eDfIter = df.end(); dfIter != eDfIter; dfIter++)</div>
3414
- <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; {</div>
3415
- <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* keyBB = dfIter-&gt;first;</div>
3416
- <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keyword">const</span> std::set&lt;BasicBlock* &gt;&amp; domSet = dfIter-&gt;second;</div>
3417
- <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFBasicBlock*&gt;</a>&amp; valueBasicBlocks = dfBBsMap[<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(keyBB)];</div>
3418
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bbValue:domSet)</div>
3419
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; {</div>
3420
- <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; valueBasicBlocks.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bbValue));</div>
3421
- <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div>
3422
- <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div>
3423
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; std::vector&lt;const SVFBasicBlock*&gt; reachableBBs;</div>
3424
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">LLVMUtil::getFunReachableBBs</a>(fun, reachableBBs);</div>
3425
- <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">setReachableBBs</a>(reachableBBs);</div>
3426
- <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; </div>
3427
- <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = fun-&gt;begin(), beit = fun-&gt;end(); bit!=beit; ++bit)</div>
3428
- <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; {</div>
3429
- <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &amp;bb = *bit;</div>
3430
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(&amp;bb);</div>
3431
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* dtNode = dt.getNode(&amp;bb))</div>
3432
- <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; {</div>
3433
- <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVFLoopAndDomInfo::BBSet</a>&amp; bbSet = ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a2fc6b806a436d8fa65863f6cef99e716">getDomTreeMap</a>()[svfBB];</div>
3434
- <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *dtNode)</div>
3435
- <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div>
3436
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>* domSVFBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(domBB-&gt;getBlock());</div>
3437
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; bbSet.insert(domSVFBB);</div>
3438
- <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }</div>
3439
- <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div>
3440
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; </div>
3441
- <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* pdtNode = pdt.getNode(&amp;bb))</div>
3442
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; {</div>
3443
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> level = pdtNode-&gt;getLevel();</div>
3444
- <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ac285502846c993f149b6bcc3e04f767e">getBBPDomLevel</a>()[svfBB] = level;</div>
3445
- <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* idomBB = pdtNode-&gt;getIDom()-&gt;getBlock();</div>
3446
- <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <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>
3447
- <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae8a308d5ee34c0eb4a6c1278565e5907">getBB2PIdom</a>()[svfBB] = idom;</div>
3448
- <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; </div>
3449
- <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVFLoopAndDomInfo::BBSet</a>&amp; bbSet = ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad07f95e790b5c3a50c864155aa20a083">getPostDomTreeMap</a>()[svfBB];</div>
3450
- <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *pdtNode)</div>
3451
- <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; {</div>
3452
- <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>* domSVFBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(domBB-&gt;getBlock());</div>
3453
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; bbSet.insert(domSVFBB);</div>
3454
- <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; }</div>
3455
- <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
3456
- <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; </div>
3457
- <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* loop = loopInfo.getLoopFor(&amp;bb))</div>
3458
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div>
3459
- <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* loopBlock : loop-&gt;getBlocks())</div>
3460
- <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div>
3461
- <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <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>
3462
- <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">addToBB2LoopMap</a>(svfBB, loopbb);</div>
3463
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div>
3464
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div>
3465
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div>
3466
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;}</div>
3392
+ <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>
3393
+ <div class="fragment"><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;{</div>
3394
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div>
3395
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">return</span>;</div>
3396
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="comment">//process and stored dt &amp; df</span></div>
3397
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div>
3398
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a> df;</div>
3399
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; dt.recalculate(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp;<span class="keyword">&gt;</span>(*fun));</div>
3400
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; df.analyze(dt);</div>
3401
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a> loopInfo = <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>(dt);</div>
3402
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a> pdt = <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp;<span class="keyword">&gt;</span>(*fun));</div>
3403
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = svffun-&gt;getLoopAndDomInfo();</div>
3404
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; </div>
3405
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFBasicBlock*,Set&lt;const SVFBasicBlock*&gt;</a>&gt; &amp; dfBBsMap = ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae37546be7304c66b4eca2654d995eaa7">getDomFrontierMap</a>();</div>
3406
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">for</span> (DominanceFrontierBase::const_iterator dfIter = df.begin(), eDfIter = df.end(); dfIter != eDfIter; dfIter++)</div>
3407
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div>
3408
+ <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* keyBB = dfIter-&gt;first;</div>
3409
+ <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keyword">const</span> std::set&lt;BasicBlock* &gt;&amp; domSet = dfIter-&gt;second;</div>
3410
+ <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFBasicBlock*&gt;</a>&amp; valueBasicBlocks = dfBBsMap[<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(keyBB)];</div>
3411
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bbValue:domSet)</div>
3412
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; {</div>
3413
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; valueBasicBlocks.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bbValue));</div>
3414
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div>
3415
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div>
3416
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; std::vector&lt;const SVFBasicBlock*&gt; reachableBBs;</div>
3417
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">LLVMUtil::getFunReachableBBs</a>(fun, reachableBBs);</div>
3418
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">setReachableBBs</a>(reachableBBs);</div>
3419
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; </div>
3420
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = fun-&gt;begin(), beit = fun-&gt;end(); bit!=beit; ++bit)</div>
3421
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div>
3422
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &amp;bb = *bit;</div>
3423
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(&amp;bb);</div>
3424
+ <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* dtNode = dt.getNode(&amp;bb))</div>
3425
+ <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; {</div>
3426
+ <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVFLoopAndDomInfo::BBSet</a>&amp; bbSet = ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a2fc6b806a436d8fa65863f6cef99e716">getDomTreeMap</a>()[svfBB];</div>
3427
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *dtNode)</div>
3428
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; {</div>
3429
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>* domSVFBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(domBB-&gt;getBlock());</div>
3430
+ <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; bbSet.insert(domSVFBB);</div>
3431
+ <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div>
3432
+ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div>
3433
+ <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; </div>
3434
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* pdtNode = pdt.getNode(&amp;bb))</div>
3435
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div>
3436
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> level = pdtNode-&gt;getLevel();</div>
3437
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ac285502846c993f149b6bcc3e04f767e">getBBPDomLevel</a>()[svfBB] = level;</div>
3438
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* idomBB = pdtNode-&gt;getIDom()-&gt;getBlock();</div>
3439
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <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>
3440
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae8a308d5ee34c0eb4a6c1278565e5907">getBB2PIdom</a>()[svfBB] = idom;</div>
3441
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; </div>
3442
+ <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVFLoopAndDomInfo::BBSet</a>&amp; bbSet = ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad07f95e790b5c3a50c864155aa20a083">getPostDomTreeMap</a>()[svfBB];</div>
3443
+ <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *pdtNode)</div>
3444
+ <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div>
3445
+ <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>* domSVFBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(domBB-&gt;getBlock());</div>
3446
+ <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; bbSet.insert(domSVFBB);</div>
3447
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div>
3448
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div>
3449
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; </div>
3450
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* loop = loopInfo.getLoopFor(&amp;bb))</div>
3451
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div>
3452
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* loopBlock : loop-&gt;getBlocks())</div>
3453
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div>
3454
+ <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <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>
3455
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">addToBB2LoopMap</a>(svfBB, loopbb);</div>
3456
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div>
3457
+ <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div>
3458
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div>
3459
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;}</div>
3467
3460
  </div><!-- fragment -->
3468
3461
  </div>
3469
3462
  </div>
@@ -3492,71 +3485,71 @@ Friends</h2></td></tr>
3492
3485
  </div><div class="memdoc">
3493
3486
  <p>set exit block: exit basic block must have no successors and have a return instruction</p>
3494
3487
 
3495
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00317">317</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3496
- <div class="fragment"><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;{</div>
3497
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *svfFun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(func);</div>
3498
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = func-&gt;begin(), ebit = func-&gt;end(); bit != ebit; ++bit)</div>
3499
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div>
3500
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &amp;*bit;</div>
3501
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfbb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
3502
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <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>
3488
+ <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>
3489
+ <div class="fragment"><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;{</div>
3490
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *svfFun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(func);</div>
3491
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = func-&gt;begin(), ebit = func-&gt;end(); bit != ebit; ++bit)</div>
3492
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; {</div>
3493
+ <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &amp;*bit;</div>
3494
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfbb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
3495
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <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>
3496
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div>
3497
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <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>
3498
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">addSuccBasicBlock</a>(svf_scc_bb);</div>
3499
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div>
3500
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <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
3501
  <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; {</div>
3504
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <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>
3505
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">addSuccBasicBlock</a>(svf_scc_bb);</div>
3502
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <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>
3503
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">addPredBasicBlock</a>(svf_pred_bb);</div>
3506
3504
  <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div>
3507
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <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>
3508
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div>
3509
- <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <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>
3510
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">addPredBasicBlock</a>(svf_pred_bb);</div>
3511
- <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; }</div>
3512
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; </div>
3513
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span> (svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a66f51cd41e93ad055c4a0c2874e73fae">getSuccessors</a>().empty())</div>
3514
- <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div>
3515
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abb4b5ed04ec70a2e7fca8198132370cf">LLVMUtil::basicBlockHasRetInst</a>(bb))</div>
3516
- <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; {</div>
3517
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; svfFun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#abd458bb5a035d3f7db32fac5f01b57f3">setExitBlock</a>(svfbb);</div>
3518
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div>
3519
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div>
3520
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; </div>
3521
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator iit = bb-&gt;begin(), eiit = bb-&gt;end(); iit != eiit; ++iit)</div>
3522
- <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; {</div>
3523
- <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &amp;*iit;</div>
3524
- <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast&lt;CallBase&gt;(inst))</div>
3525
- <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div>
3526
- <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfinst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(call);</div>
3527
- <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>* svfcall = SVFUtil::cast&lt;SVFCallInst&gt;(svfinst);</div>
3528
- <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">auto</span> called_llvmval = call-&gt;getCalledOperand()-&gt;stripPointerCasts();</div>
3529
- <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* called_llvmfunc = SVFUtil::dyn_cast&lt;Function&gt;(called_llvmval))</div>
3530
- <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; {</div>
3531
- <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <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>
3532
- <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <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>
3533
- <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(callee);</div>
3534
- <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div>
3535
- <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">else</span></div>
3536
- <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div>
3537
- <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; svfcall-&gt;<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>
3538
- <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div>
3539
- <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>* virtualCall = SVFUtil::dyn_cast&lt;SVFVirtualCallInst&gt;(svfcall))</div>
3540
- <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; {</div>
3541
- <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; virtualCall-&gt;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>
3542
- <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; virtualCall-&gt;setFunIdxInVtable(<a class="code" href="namespaceSVF_1_1cppUtil.html#a279fa78f7a2e45b458a0358de9c061b8">cppUtil::getVCallIdx</a>(call));</div>
3543
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; virtualCall-&gt;setFunNameOfVirtualCall(<a class="code" href="namespaceSVF_1_1cppUtil.html#a120e9fc3aa1dc2db3e0c2ea9a85b38b6">cppUtil::getFunNameOfVCallSite</a>(call));</div>
3505
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; </div>
3506
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">if</span> (svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a66f51cd41e93ad055c4a0c2874e73fae">getSuccessors</a>().empty())</div>
3507
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; {</div>
3508
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abb4b5ed04ec70a2e7fca8198132370cf">LLVMUtil::basicBlockHasRetInst</a>(bb))</div>
3509
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div>
3510
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; svfFun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#abd458bb5a035d3f7db32fac5f01b57f3">setExitBlock</a>(svfbb);</div>
3511
+ <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div>
3512
+ <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div>
3513
+ <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; </div>
3514
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator iit = bb-&gt;begin(), eiit = bb-&gt;end(); iit != eiit; ++iit)</div>
3515
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div>
3516
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &amp;*iit;</div>
3517
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast&lt;CallBase&gt;(inst))</div>
3518
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div>
3519
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfinst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(call);</div>
3520
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>* svfcall = SVFUtil::cast&lt;SVFCallInst&gt;(svfinst);</div>
3521
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keyword">auto</span> called_llvmval = call-&gt;getCalledOperand()-&gt;stripPointerCasts();</div>
3522
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* called_llvmfunc = SVFUtil::dyn_cast&lt;Function&gt;(called_llvmval))</div>
3523
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div>
3524
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <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>
3525
+ <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <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>
3526
+ <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(callee);</div>
3527
+ <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div>
3528
+ <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">else</span></div>
3529
+ <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; {</div>
3530
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; svfcall-&gt;<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>
3531
+ <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div>
3532
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>* virtualCall = SVFUtil::dyn_cast&lt;SVFVirtualCallInst&gt;(svfcall))</div>
3533
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; {</div>
3534
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; virtualCall-&gt;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>
3535
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; virtualCall-&gt;setFunIdxInVtable(<a class="code" href="namespaceSVF_1_1cppUtil.html#a279fa78f7a2e45b458a0358de9c061b8">cppUtil::getVCallIdx</a>(call));</div>
3536
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; virtualCall-&gt;setFunNameOfVirtualCall(<a class="code" href="namespaceSVF_1_1cppUtil.html#a120e9fc3aa1dc2db3e0c2ea9a85b38b6">cppUtil::getFunNameOfVCallSite</a>(call));</div>
3537
+ <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div>
3538
+ <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; call-&gt;arg_size(); i++)</div>
3539
+ <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; {</div>
3540
+ <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfval = <a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(call-&gt;getArgOperand(i));</div>
3541
+ <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">addArgument</a>(svfval);</div>
3544
3542
  <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; }</div>
3545
- <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; call-&gt;arg_size(); i++)</div>
3546
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; {</div>
3547
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfval = <a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(call-&gt;getArgOperand(i));</div>
3548
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">addArgument</a>(svfval);</div>
3549
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; }</div>
3550
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div>
3551
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <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)-&gt;getSuccInstructions());</div>
3552
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <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)-&gt;getPredInstructions());</div>
3553
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div>
3554
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div>
3555
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <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>&#160; <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>&#160; <span class="keywordflow">if</span>(svfFun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a374cbaa780f540cb4b4ccac562a82632">exitBlock</a> == <span class="keyword">nullptr</span> &amp;&amp; svfFun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a9a7f1f56b6cfc33e7fa241286a07fd63">hasBasicBlock</a>()) svfFun-&gt;<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>&#160; <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *<span class="keyword">&gt;</span>(svfFun-&gt;<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>&#160;}</div>
3543
+ <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div>
3544
+ <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <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)-&gt;getSuccInstructions());</div>
3545
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <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)-&gt;getPredInstructions());</div>
3546
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; }</div>
3547
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; }</div>
3548
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="comment">// For no return functions, we set the last block as exit BB</span></div>
3549
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="comment">// This ensures that each function that has definition must have an exit BB</span></div>
3550
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">if</span>(svfFun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a374cbaa780f540cb4b4ccac562a82632">exitBlock</a> == <span class="keyword">nullptr</span> &amp;&amp; svfFun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a9a7f1f56b6cfc33e7fa241286a07fd63">hasBasicBlock</a>()) svfFun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#abd458bb5a035d3f7db32fac5f01b57f3">setExitBlock</a>(</div>
3551
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *<span class="keyword">&gt;</span>(svfFun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a60797e9e8b9cbd6b32cc71fa5d00d80c">back</a>()));</div>
3552
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;}</div>
3560
3553
  </div><!-- fragment -->
3561
3554
  </div>
3562
3555
  </div>
@@ -3584,22 +3577,22 @@ Friends</h2></td></tr>
3584
3577
  </div><div class="memdoc">
3585
3578
  <p>Function</p>
3586
3579
 
3587
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00299">299</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3588
- <div class="fragment"><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;{</div>
3589
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
3590
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div>
3591
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; f : mod.functions())</div>
3592
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; {</div>
3593
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(&amp;f);</div>
3594
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002">initSVFBasicBlock</a>(&amp;f);</div>
3595
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; </div>
3596
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun))</div>
3597
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div>
3598
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">initDomTree</a>(svffun, &amp;f);</div>
3599
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div>
3600
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div>
3601
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div>
3602
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;}</div>
3580
+ <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>
3581
+ <div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;{</div>
3582
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
3583
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div>
3584
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; f : mod.functions())</div>
3585
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div>
3586
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(&amp;f);</div>
3587
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002">initSVFBasicBlock</a>(&amp;f);</div>
3588
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; </div>
3589
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun))</div>
3590
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; {</div>
3591
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">initDomTree</a>(svffun, &amp;f);</div>
3592
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div>
3593
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div>
3594
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div>
3595
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;}</div>
3603
3596
  </div><!-- fragment -->
3604
3597
  </div>
3605
3598
  </div>
@@ -3666,44 +3659,44 @@ Friends</h2></td></tr>
3666
3659
  </table>
3667
3660
  </div><div class="memdoc">
3668
3661
 
3669
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00568">568</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3670
- <div class="fragment"><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;{</div>
3671
- <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="comment">// This function loads the ExtAPI bitcode file as an LLVM module. Note that it is important that</span></div>
3672
- <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="comment">// the same LLVMContext object is used to load this bitcode file as is used by the other modules</span></div>
3673
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="comment">// being analysed.</span></div>
3674
- <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="comment">// When the modules are loaded from bitcode files (i.e. passing filenames to files containing</span></div>
3675
- <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="comment">// LLVM IR to `buildSVFModule({file1.bc, file2.bc, ...})) the context is created while loading</span></div>
3676
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="comment">// the modules in `loadModules()`, which populates this-&gt;modules and this-&gt;owned_modules.</span></div>
3677
- <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="comment">// If, however, an LLVM Module object is passed to `buildSVFModule` (e.g. from an LLVM pass),</span></div>
3678
- <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="comment">// the context should be retrieved from the module itself (note that the garbage collection from</span></div>
3679
- <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="comment">// `std::unique_ptr&lt;LLVMContext&gt; LLVMModuleSet::owned_ctx` should be avoided in this case). This</span></div>
3680
- <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="comment">// function populates only this-&gt;modules.</span></div>
3681
- <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="comment">// In both cases, fetching the context from the main LLVM module (through `getContext`) works</span></div>
3682
- <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; assert(!<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>() &amp;&amp; <span class="stringliteral">&quot;LLVMModuleSet contains no modules; cannot load ExtAPI module without LLVMContext!&quot;</span>);</div>
3683
- <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; </div>
3684
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="comment">// Load external API module (extapi.bc)</span></div>
3685
- <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;getExtBcPath().<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>())</div>
3686
- <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; {</div>
3687
- <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> extModuleName = <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;<a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>();</div>
3688
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(extModuleName))</div>
3689
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div>
3690
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;not an external IR file: &quot;</span> &lt;&lt; extModuleName &lt;&lt; std::endl;</div>
3691
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; abort();</div>
3692
- <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; }</div>
3693
- <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3694
- <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(extModuleName, Err, <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>());</div>
3695
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3696
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {</div>
3697
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;load external module: &quot;</span> &lt;&lt; extModuleName &lt;&lt; <span class="stringliteral">&quot;failed!!\n\n&quot;</span>;</div>
3698
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3699
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; abort();</div>
3700
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; }</div>
3701
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="comment">// The module of extapi.bc needs to be inserted before applications modules, like std::vector&lt;std::reference_wrapper&lt;Module&gt;&gt; modules{extapi_module, app_module}.</span></div>
3702
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <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>
3703
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <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>
3704
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <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>
3705
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; }</div>
3706
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;}</div>
3662
+ <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>
3663
+ <div class="fragment"><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;{</div>
3664
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="comment">// This function loads the ExtAPI bitcode file as an LLVM module. Note that it is important that</span></div>
3665
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">// the same LLVMContext object is used to load this bitcode file as is used by the other modules</span></div>
3666
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="comment">// being analysed.</span></div>
3667
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="comment">// When the modules are loaded from bitcode files (i.e. passing filenames to files containing</span></div>
3668
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="comment">// LLVM IR to `buildSVFModule({file1.bc, file2.bc, ...})) the context is created while loading</span></div>
3669
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="comment">// the modules in `loadModules()`, which populates this-&gt;modules and this-&gt;owned_modules.</span></div>
3670
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="comment">// If, however, an LLVM Module object is passed to `buildSVFModule` (e.g. from an LLVM pass),</span></div>
3671
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="comment">// the context should be retrieved from the module itself (note that the garbage collection from</span></div>
3672
+ <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="comment">// `std::unique_ptr&lt;LLVMContext&gt; LLVMModuleSet::owned_ctx` should be avoided in this case). This</span></div>
3673
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="comment">// function populates only this-&gt;modules.</span></div>
3674
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="comment">// In both cases, fetching the context from the main LLVM module (through `getContext`) works</span></div>
3675
+ <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; assert(!<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>() &amp;&amp; <span class="stringliteral">&quot;LLVMModuleSet contains no modules; cannot load ExtAPI module without LLVMContext!&quot;</span>);</div>
3676
+ <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; </div>
3677
+ <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="comment">// Load external API module (extapi.bc)</span></div>
3678
+ <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;getExtBcPath().<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>())</div>
3679
+ <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; {</div>
3680
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> extModuleName = <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;<a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>();</div>
3681
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(extModuleName))</div>
3682
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; {</div>
3683
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;not an external IR file: &quot;</span> &lt;&lt; extModuleName &lt;&lt; std::endl;</div>
3684
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; abort();</div>
3685
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }</div>
3686
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3687
+ <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(extModuleName, Err, <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>());</div>
3688
+ <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3689
+ <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div>
3690
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;load external module: &quot;</span> &lt;&lt; extModuleName &lt;&lt; <span class="stringliteral">&quot;failed!!\n\n&quot;</span>;</div>
3691
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3692
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; abort();</div>
3693
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; }</div>
3694
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="comment">// The module of extapi.bc needs to be inserted before applications modules, like std::vector&lt;std::reference_wrapper&lt;Module&gt;&gt; modules{extapi_module, app_module}.</span></div>
3695
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <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>
3696
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <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>
3697
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <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>
3698
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; }</div>
3699
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;}</div>
3707
3700
  </div><!-- fragment -->
3708
3701
  </div>
3709
3702
  </div>
@@ -3731,70 +3724,70 @@ Friends</h2></td></tr>
3731
3724
  </table>
3732
3725
  </div><div class="memdoc">
3733
3726
 
3734
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00503">503</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3735
- <div class="fragment"><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;{</div>
3736
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; </div>
3737
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="comment">// We read SVFIR from LLVM IR</span></div>
3738
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <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>
3739
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; {</div>
3740
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span>(moduleNameVec.empty())</div>
3741
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; {</div>
3742
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;no LLVM bc file is found!\n&quot;</span>;</div>
3743
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; exit(0);</div>
3744
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div>
3745
- <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="comment">//assert(!moduleNameVec.empty() &amp;&amp; &quot;no LLVM bc file is found!&quot;);</span></div>
3746
- <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div>
3747
- <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div>
3748
- <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">else</span></div>
3749
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <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>
3750
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; </div>
3727
+ <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>
3728
+ <div class="fragment"><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;{</div>
3729
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; </div>
3730
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="comment">// We read SVFIR from LLVM IR</span></div>
3731
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <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>
3732
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div>
3733
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">if</span>(moduleNameVec.empty())</div>
3734
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div>
3735
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;no LLVM bc file is found!\n&quot;</span>;</div>
3736
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; exit(0);</div>
3737
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div>
3738
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="comment">//assert(!moduleNameVec.empty() &amp;&amp; &quot;no LLVM bc file is found!&quot;);</span></div>
3739
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div>
3740
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div>
3741
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">else</span></div>
3742
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <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>
3743
+ <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; </div>
3744
+ <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="comment">//</span></div>
3745
+ <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="comment">// LLVMContext objects separate global LLVM settings (from which e.g. types are</span></div>
3746
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="comment">// derived); multiple LLVMContext objects can coexist and each context can &quot;own&quot;</span></div>
3747
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="comment">// multiple modules (modules can only have one context). Mixing contexts can lead</span></div>
3748
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="comment">// to unintended inequalities, such as the following:</span></div>
3751
3749
  <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="comment">//</span></div>
3752
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="comment">// LLVMContext objects separate global LLVM settings (from which e.g. types are</span></div>
3753
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="comment">// derived); multiple LLVMContext objects can coexist and each context can &quot;own&quot;</span></div>
3754
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="comment">// multiple modules (modules can only have one context). Mixing contexts can lead</span></div>
3755
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="comment">// to unintended inequalities, such as the following:</span></div>
3756
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="comment">//</span></div>
3757
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3758
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="comment">// LLVMContext ctxa,ctxb;</span></div>
3759
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="comment">// IntegerType * t1 = IntegerType::get(ctxa,32);</span></div>
3760
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="comment">// IntegerType * t2 = IntegerType::get(ctxa,32);</span></div>
3761
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="comment">// assert(t1 == t2);</span></div>
3762
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="comment">// IntegerType * t3 = IntegerType::get(ctxb,32);</span></div>
3763
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="comment">// IntegerType * t4 = IntegerType::get(ctxb,32);</span></div>
3764
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="comment">// assert(t3 == t4);</span></div>
3765
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="comment">// assert(t1 != t3);</span></div>
3766
- <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3767
- <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">//</span></div>
3768
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="comment">// When loading bytecode files, SVF will use the same LLVMContext object for all</span></div>
3769
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">// modules (i.e. the context owns all loaded modules). This applies to ExtAPI as</span></div>
3770
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="comment">// well, which *must* be loaded using the same LLVMContext object. Hence, when</span></div>
3771
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="comment">// loading modules from bitcode files, a new LLVMContext is created (using a</span></div>
3772
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="comment">// `std::unique_ptr&lt;LLVMContext&gt;` type to ensure automatic garbage collection).</span></div>
3773
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="comment">//</span></div>
3774
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="comment">// This garbage collection should be avoided when building an SVF module from an LLVM</span></div>
3775
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="comment">// module instance; see the comment(s) in `buildSVFModule` and `loadExtAPIModules()`</span></div>
3776
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; </div>
3777
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b678ce8642fcdab0582cd626b7ac7c5">owned_ctx</a> = std::make_unique&lt;LLVMContext&gt;();</div>
3778
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; moduleName : moduleNameVec)</div>
3779
- <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div>
3780
- <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(moduleName))</div>
3781
- <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {</div>
3782
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;not an IR file: &quot;</span> &lt;&lt; moduleName &lt;&lt; std::endl;</div>
3783
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; abort();</div>
3784
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; }</div>
3785
- <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; </div>
3786
- <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3787
- <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(moduleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b678ce8642fcdab0582cd626b7ac7c5">owned_ctx</a>);</div>
3788
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3789
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; {</div>
3790
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;load module: &quot;</span> &lt;&lt; moduleName &lt;&lt; <span class="stringliteral">&quot;failed!!\n\n&quot;</span>;</div>
3791
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3792
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; abort();</div>
3793
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; }</div>
3794
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <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>&#160; <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>&#160; }</div>
3797
- <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;}</div>
3750
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3751
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="comment">// LLVMContext ctxa,ctxb;</span></div>
3752
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="comment">// IntegerType * t1 = IntegerType::get(ctxa,32);</span></div>
3753
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="comment">// IntegerType * t2 = IntegerType::get(ctxa,32);</span></div>
3754
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="comment">// assert(t1 == t2);</span></div>
3755
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="comment">// IntegerType * t3 = IntegerType::get(ctxb,32);</span></div>
3756
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="comment">// IntegerType * t4 = IntegerType::get(ctxb,32);</span></div>
3757
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="comment">// assert(t3 == t4);</span></div>
3758
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="comment">// assert(t1 != t3);</span></div>
3759
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3760
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="comment">//</span></div>
3761
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="comment">// When loading bytecode files, SVF will use the same LLVMContext object for all</span></div>
3762
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="comment">// modules (i.e. the context owns all loaded modules). This applies to ExtAPI as</span></div>
3763
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="comment">// well, which *must* be loaded using the same LLVMContext object. Hence, when</span></div>
3764
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="comment">// loading modules from bitcode files, a new LLVMContext is created (using a</span></div>
3765
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">// `std::unique_ptr&lt;LLVMContext&gt;` type to ensure automatic garbage collection).</span></div>
3766
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="comment">//</span></div>
3767
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">// This garbage collection should be avoided when building an SVF module from an LLVM</span></div>
3768
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="comment">// module instance; see the comment(s) in `buildSVFModule` and `loadExtAPIModules()`</span></div>
3769
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; </div>
3770
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b678ce8642fcdab0582cd626b7ac7c5">owned_ctx</a> = std::make_unique&lt;LLVMContext&gt;();</div>
3771
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; moduleName : moduleNameVec)</div>
3772
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div>
3773
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(moduleName))</div>
3774
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; {</div>
3775
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;not an IR file: &quot;</span> &lt;&lt; moduleName &lt;&lt; std::endl;</div>
3776
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; abort();</div>
3777
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; }</div>
3778
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; </div>
3779
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3780
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(moduleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b678ce8642fcdab0582cd626b7ac7c5">owned_ctx</a>);</div>
3781
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3782
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; {</div>
3783
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;load module: &quot;</span> &lt;&lt; moduleName &lt;&lt; <span class="stringliteral">&quot;failed!!\n\n&quot;</span>;</div>
3784
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3785
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; abort();</div>
3786
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</div>
3787
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(*mod);</div>
3788
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <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>
3789
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; }</div>
3790
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;}</div>
3798
3791
  </div><!-- fragment -->
3799
3792
  </div>
3800
3793
  </div>
@@ -3826,27 +3819,27 @@ Friends</h2></td></tr>
3826
3819
  <p><a class="el" href="classSVF_1_1BreakConstantGEPs.html">BreakConstantGEPs</a> Pass</p>
3827
3820
  <p><a class="el" href="classSVF_1_1MergeFunctionRets.html">MergeFunctionRets</a> Pass</p>
3828
3821
 
3829
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00458">458</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3830
- <div class="fragment"><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;{</div>
3831
- <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; std::unique_ptr&lt;BreakConstantGEPs&gt; p1 = std::make_unique&lt;BreakConstantGEPs&gt;();</div>
3832
- <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div>
3833
- <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; {</div>
3834
- <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; p1-&gt;runOnModule(M);</div>
3835
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; }</div>
3836
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; </div>
3837
- <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; std::unique_ptr&lt;UnifyFunctionExitNodes&gt; p2 =</div>
3838
- <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; std::make_unique&lt;UnifyFunctionExitNodes&gt;();</div>
3839
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div>
3840
- <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; {</div>
3841
- <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <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>
3842
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; {</div>
3843
- <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &amp;fun = *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>;</div>
3844
- <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
3845
- <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">continue</span>;</div>
3846
- <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; p2-&gt;runOnFunction(fun);</div>
3847
- <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div>
3848
- <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; }</div>
3849
- <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;}</div>
3822
+ <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>
3823
+ <div class="fragment"><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;{</div>
3824
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; std::unique_ptr&lt;BreakConstantGEPs&gt; p1 = std::make_unique&lt;BreakConstantGEPs&gt;();</div>
3825
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div>
3826
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; {</div>
3827
+ <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; p1-&gt;runOnModule(M);</div>
3828
+ <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div>
3829
+ <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; </div>
3830
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; std::unique_ptr&lt;UnifyFunctionExitNodes&gt; p2 =</div>
3831
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; std::make_unique&lt;UnifyFunctionExitNodes&gt;();</div>
3832
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div>
3833
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; {</div>
3834
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <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>
3835
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; {</div>
3836
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &amp;fun = *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>;</div>
3837
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
3838
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">continue</span>;</div>
3839
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; p2-&gt;runOnFunction(fun);</div>
3840
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div>
3841
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }</div>
3842
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;}</div>
3850
3843
  </div><!-- fragment -->
3851
3844
  </div>
3852
3845
  </div>
@@ -3874,26 +3867,26 @@ Friends</h2></td></tr>
3874
3867
  </table>
3875
3868
  </div><div class="memdoc">
3876
3869
 
3877
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00482">482</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3878
- <div class="fragment"><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;{</div>
3879
- <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* mset = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">getLLVMModuleSet</a>();</div>
3880
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a>(moduleNameVec);</div>
3881
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8820d1df9098db6eadf3a9c67e380e55">loadExtAPIModules</a>();</div>
3882
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div>
3883
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; </div>
3884
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> preProcessSuffix = <span class="stringliteral">&quot;.pre.bc&quot;</span>;</div>
3885
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="comment">// Get the existing module names, remove old extension, add preProcessSuffix</span></div>
3886
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; moduleNameVec.size(); i++)</div>
3887
- <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div>
3888
- <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lastIndex = moduleNameVec[i].find_last_of(<span class="stringliteral">&quot;.&quot;</span>);</div>
3889
- <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> rawName = moduleNameVec[i].substr(0, lastIndex);</div>
3890
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; moduleNameVec[i] = (rawName + preProcessSuffix);</div>
3891
- <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
3892
- <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; </div>
3893
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">dumpModulesToFile</a>(preProcessSuffix);</div>
3894
- <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">preProcessed</a> = <span class="keyword">true</span>;</div>
3895
- <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">releaseLLVMModuleSet</a>();</div>
3896
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;}</div>
3870
+ <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>
3871
+ <div class="fragment"><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;{</div>
3872
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* mset = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">getLLVMModuleSet</a>();</div>
3873
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a>(moduleNameVec);</div>
3874
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8820d1df9098db6eadf3a9c67e380e55">loadExtAPIModules</a>();</div>
3875
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div>
3876
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; </div>
3877
+ <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> preProcessSuffix = <span class="stringliteral">&quot;.pre.bc&quot;</span>;</div>
3878
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="comment">// Get the existing module names, remove old extension, add preProcessSuffix</span></div>
3879
+ <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; moduleNameVec.size(); i++)</div>
3880
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div>
3881
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lastIndex = moduleNameVec[i].find_last_of(<span class="stringliteral">&quot;.&quot;</span>);</div>
3882
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> rawName = moduleNameVec[i].substr(0, lastIndex);</div>
3883
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; moduleNameVec[i] = (rawName + preProcessSuffix);</div>
3884
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div>
3885
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; </div>
3886
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">dumpModulesToFile</a>(preProcessSuffix);</div>
3887
+ <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">preProcessed</a> = <span class="keyword">true</span>;</div>
3888
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">releaseLLVMModuleSet</a>();</div>
3889
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;}</div>
3897
3890
  </div><!-- fragment -->
3898
3891
  </div>
3899
3892
  </div>
@@ -3951,24 +3944,24 @@ Friends</h2></td></tr>
3951
3944
  </table>
3952
3945
  </div><div class="memdoc">
3953
3946
 
3954
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01168">1168</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3955
- <div class="fragment"><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;{</div>
3956
- <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;Function*&gt;</a> removedFuncList;</div>
3957
- <div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
3958
- <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; {</div>
3959
- <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordflow">if</span> (mod.getName().str() != <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;<a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>())</div>
3960
- <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">continue</span>;</div>
3961
- <div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; func : mod.functions())</div>
3962
- <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; {</div>
3963
- <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#abbca1044dc59299224598ec2ba17fe7e">isCalledExtFunction</a>(&amp;func))</div>
3964
- <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; {</div>
3965
- <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; removedFuncList.insert(&amp;func);</div>
3966
- <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>.erase(&amp;func);</div>
3967
- <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; }</div>
3968
- <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; }</div>
3969
- <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; }</div>
3970
- <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a>(removedFuncList);</div>
3971
- <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;}</div>
3947
+ <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>
3948
+ <div class="fragment"><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;{</div>
3949
+ <div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;Function*&gt;</a> removedFuncList;</div>
3950
+ <div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
3951
+ <div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; {</div>
3952
+ <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordflow">if</span> (mod.getName().str() != <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;<a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>())</div>
3953
+ <div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keywordflow">continue</span>;</div>
3954
+ <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; func : mod.functions())</div>
3955
+ <div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; {</div>
3956
+ <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#abbca1044dc59299224598ec2ba17fe7e">isCalledExtFunction</a>(&amp;func))</div>
3957
+ <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; {</div>
3958
+ <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; removedFuncList.insert(&amp;func);</div>
3959
+ <div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7968a00d41166d18acb684052ed1eed8">ExtFun2Annotations</a>.erase(&amp;func);</div>
3960
+ <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; }</div>
3961
+ <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; }</div>
3962
+ <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; }</div>
3963
+ <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a>(removedFuncList);</div>
3964
+ <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;}</div>
3972
3965
  </div><!-- fragment -->
3973
3966
  </div>
3974
3967
  </div>
@@ -4006,31 +3999,33 @@ Friends</h2></td></tr>
4006
3999
  </table>
4007
4000
  </div><div class="memdoc">
4008
4001
 
4009
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01213">1213</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
4010
- <div class="fragment"><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;{</div>
4011
- <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVFValue2LLVMValue</a>[svfvalue] = val;</div>
4012
- <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; </div>
4013
- <div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">LLVMUtil::isPtrInUncalledFunction</a>(val))</div>
4014
- <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; svfvalue-&gt;setPtrInUncalledFunction();</div>
4015
- <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
4016
- <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; svfvalue-&gt;setConstDataOrAggData();</div>
4017
- <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; </div>
4018
- <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* glob = SVFUtil::dyn_cast&lt;SVFGlobalValue&gt;(svfvalue))</div>
4019
- <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; {</div>
4020
- <div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <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>
4021
- <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; assert(SVFUtil::isa&lt;GlobalValue&gt;(llvmVal) &amp;&amp; <span class="stringliteral">&quot;not a GlobalValue?&quot;</span>);</div>
4022
- <div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; glob-&gt;setDefGlobalForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(SVFUtil::cast&lt;GlobalValue&gt;(llvmVal)));</div>
4023
- <div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; }</div>
4024
- <div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = SVFUtil::dyn_cast&lt;SVFFunction&gt;(svfvalue))</div>
4025
- <div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; {</div>
4026
- <div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::cast&lt;Function&gt;(val);</div>
4027
- <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; svffun-&gt;setIsNotRet(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">LLVMUtil::functionDoesNotRet</a>(func));</div>
4028
- <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; svffun-&gt;setIsUncalledFunction(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">LLVMUtil::isUncalledFunction</a>(func));</div>
4029
- <div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; svffun-&gt;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>
4030
- <div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; }</div>
4031
- <div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; </div>
4032
- <div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; svfvalue-&gt;setSourceLoc(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(val));</div>
4033
- <div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;}</div>
4002
+ <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>
4003
+ <div class="fragment"><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;{</div>
4004
+ <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVFValue2LLVMValue</a>[svfvalue] = val;</div>
4005
+ <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; </div>
4006
+ <div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <span class="keywordflow">if</span>(val-&gt;hasName())</div>
4007
+ <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; svfvalue-&gt;setName(val-&gt;getName().str());</div>
4008
+ <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">LLVMUtil::isPtrInUncalledFunction</a>(val))</div>
4009
+ <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; svfvalue-&gt;setPtrInUncalledFunction();</div>
4010
+ <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
4011
+ <div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; svfvalue-&gt;setConstDataOrAggData();</div>
4012
+ <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; </div>
4013
+ <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* glob = SVFUtil::dyn_cast&lt;SVFGlobalValue&gt;(svfvalue))</div>
4014
+ <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; {</div>
4015
+ <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <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>
4016
+ <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; assert(SVFUtil::isa&lt;GlobalValue&gt;(llvmVal) &amp;&amp; <span class="stringliteral">&quot;not a GlobalValue?&quot;</span>);</div>
4017
+ <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; glob-&gt;setDefGlobalForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(SVFUtil::cast&lt;GlobalValue&gt;(llvmVal)));</div>
4018
+ <div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; }</div>
4019
+ <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = SVFUtil::dyn_cast&lt;SVFFunction&gt;(svfvalue))</div>
4020
+ <div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; {</div>
4021
+ <div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::cast&lt;Function&gt;(val);</div>
4022
+ <div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; svffun-&gt;setIsNotRet(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">LLVMUtil::functionDoesNotRet</a>(func));</div>
4023
+ <div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; svffun-&gt;setIsUncalledFunction(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">LLVMUtil::isUncalledFunction</a>(func));</div>
4024
+ <div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; svffun-&gt;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>
4025
+ <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; }</div>
4026
+ <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; </div>
4027
+ <div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; svfvalue-&gt;setSourceLoc(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(val));</div>
4028
+ <div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;}</div>
4034
4029
  </div><!-- fragment -->
4035
4030
  </div>
4036
4031
  </div>
@@ -4612,7 +4607,7 @@ Friends</h2></td></tr>
4612
4607
  <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
4608
  <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
4609
  <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#l01126">LLVMModule.cpp:1126</a></div></div>
4610
+ <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
4611
  <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
4612
  <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&lt; Function * &gt; 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
4613
  <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 +4618,7 @@ Friends</h2></td></tr>
4623
4618
  <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
4619
  <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
4620
  <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#l01422">LLVMModule.cpp:1422</a></div></div>
4621
+ <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#l01417">LLVMModule.cpp:1417</a></div></div>
4627
4622
  <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
4623
  <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&lt; std::reference_wrapper&lt; Module &gt; &gt; &amp; getLLVMModules() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00136">LLVMModule.h:136</a></div></div>
4629
4624
  <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 +4629,7 @@ Friends</h2></td></tr>
4634
4629
  <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
4630
  <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
4631
  <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 &amp; 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#l00904">LLVMModule.cpp:904</a></div></div>
4632
+ <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
4633
  <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
4634
  <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
4635
  <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 +4641,7 @@ Friends</h2></td></tr>
4646
4641
  <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
4642
  <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
4643
  <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 &quot;sse_&quot; 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 &amp;suffix)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01188">LLVMModule.cpp:1188</a></div></div>
4644
+ <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 &amp;suffix)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01183">LLVMModule.cpp:1183</a></div></div>
4650
4645
  <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
4646
  <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 &amp;n)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00247">SVFValue.h:247</a></div></div>
4652
4647
  <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 +4654,17 @@ Friends</h2></td></tr>
4659
4654
  <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
4655
  <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
4656
  <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#l01321">LLVMModule.cpp:1321</a></div></div>
4657
+ <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#l01316">LLVMModule.cpp:1316</a></div></div>
4663
4658
  <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
4659
  <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
4660
  <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#l01377">LLVMModule.cpp:1377</a></div></div>
4661
+ <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#l01372">LLVMModule.cpp:1372</a></div></div>
4667
4662
  <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
4663
  <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
4664
  <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
4665
  <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
4666
  <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 &amp;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#l01547">LLVMModule.cpp:1547</a></div></div>
4667
+ <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 &amp;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#l01542">LLVMModule.cpp:1542</a></div></div>
4673
4668
  <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
4669
  <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
4670
  <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 +4689,7 @@ Friends</h2></td></tr>
4694
4689
  <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
4690
  <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
4691
  <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&lt; const Function * &gt; getLLVMGlobalFunctions(const GlobalVariable *global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00607">LLVMModule.cpp:607</a></div></div>
4692
+ <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&lt; const Function * &gt; 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
4693
  <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
4694
  <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
4695
  <div class="ttc" id="anamespaceSVF_html_aedd9d023a68dddd66314be63bb8e48d2"><div class="ttname"><a href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">SVF::operator&gt;</a></div><div class="ttdeci">IntervalValue operator&gt;(const IntervalValue &amp;lhs, const IntervalValue &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00633">IntervalValue.h:633</a></div></div>
@@ -4716,7 +4711,7 @@ Friends</h2></td></tr>
4716
4711
  <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&lt; const SVFBasicBlock *, u32_t &gt; &amp; getBBPDomLevel() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00118">SVFValue.h:118</a></div></div>
4717
4712
  <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
4713
  <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#l00568">LLVMModule.cpp:568</a></div></div>
4714
+ <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
4715
  <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
4716
  <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
4717
  <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 +4720,7 @@ Friends</h2></td></tr>
4725
4720
  <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
4721
  <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
4722
  <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#l01168">LLVMModule.cpp:1168</a></div></div>
4723
+ <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
4724
  <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
4725
  <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
4726
  <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 +4733,12 @@ Friends</h2></td></tr>
4738
4733
  <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
4734
  <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
4735
  <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&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00503">LLVMModule.cpp:503</a></div></div>
4736
+ <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&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00498">LLVMModule.cpp:498</a></div></div>
4742
4737
  <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
4738
  <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
4739
  <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
4740
  <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#l01604">LLVMModule.cpp:1604</a></div></div>
4741
+ <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#l01599">LLVMModule.cpp:1599</a></div></div>
4747
4742
  <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&lt; std::unique_ptr&lt; Module &gt; &gt; owned_modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00072">LLVMModule.h:72</a></div></div>
4748
4743
  <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&lt; const SVFBasicBlock * &gt; &amp; getSuccessors() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00612">SVFValue.h:612</a></div></div>
4749
4744
  <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 +4746,9 @@ Friends</h2></td></tr>
4751
4746
  <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
4747
  <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
4748
  <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#l00696">LLVMModule.cpp:696</a></div></div>
4749
+ <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
4750
  <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#l00385">LLVMModule.cpp:385</a></div></div>
4751
+ <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
4752
  <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
4753
  <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
4754
  <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 +4757,7 @@ Friends</h2></td></tr>
4762
4757
  <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
4758
  <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
4759
  <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#l01484">LLVMModule.cpp:1484</a></div></div>
4760
+ <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#l01479">LLVMModule.cpp:1479</a></div></div>
4766
4761
  <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
4762
  <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
4763
  <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&lt; T &gt;::type &amp;&amp; move(T &amp;&amp;t) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00621">SVFUtil.h:621</a></div></div>
@@ -4781,14 +4776,14 @@ Friends</h2></td></tr>
4781
4776
  <div class="ttc" id="anamespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set&lt; Key, Compare, Allocator &gt; OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00105">GeneralType.h:105</a></div></div>
4782
4777
  <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&lt; std::string &gt; Graphtxt</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00201">Options.h:201</a></div></div>
4783
4778
  <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#l00299">LLVMModule.cpp:299</a></div></div>
4779
+ <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
4780
  <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
4781
  <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#l01239">LLVMModule.cpp:1239</a></div></div>
4782
+ <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
4783
  <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 &amp; 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
4784
  <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
4785
  <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#l01305">LLVMModule.cpp:1305</a></div></div>
4786
+ <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#l01300">LLVMModule.cpp:1300</a></div></div>
4792
4787
  <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
4788
  <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
4789
  <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 +4799,17 @@ Friends</h2></td></tr>
4804
4799
  <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
4800
  <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&lt; LLVMContext &gt; owned_ctx</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00071">LLVMModule.h:71</a></div></div>
4806
4801
  <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&lt; const SVFBasicBlock *, BBSet &gt; &amp; 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#l01213">LLVMModule.cpp:1213</a></div></div>
4802
+ <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
4803
  <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&lt; const SVFBasicBlock * &gt; 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#l00790">LLVMModule.cpp:790</a></div></div>
4804
+ <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
4805
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &gt; &amp;instList)</div><div class="ttdoc">Get the previous instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00331">LLVMUtil.cpp:331</a></div></div>
4811
4806
  <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
4807
  <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#l01340">LLVMModule.cpp:1340</a></div></div>
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#l01390">LLVMModule.cpp:1390</a></div></div>
4808
+ <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#l01335">LLVMModule.cpp:1335</a></div></div>
4809
+ <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#l01385">LLVMModule.cpp:1385</a></div></div>
4815
4810
  <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
4811
  <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#l00458">LLVMModule.cpp:458</a></div></div>
4812
+ <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
4813
  <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
4814
  <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
4815
  <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 +4837,7 @@ Friends</h2></td></tr>
4842
4837
  <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
4838
  <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 &amp;moduleIdentifier)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00088">SVFModule.h:88</a></div></div>
4844
4839
  <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#l00317">LLVMModule.cpp:317</a></div></div>
4840
+ <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
4841
  <!-- start footer part -->
4847
4842
  <hr class="footer"/><address class="footer"><small>
4848
4843
  Generated by &#160;<a href="http://www.doxygen.org/index.html">