svf-tools 1.0.746 → 1.0.747

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1181 -1173
  3. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +29 -29
  4. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  5. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
  7. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +1 -1
  9. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +1 -1
  10. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1154 -1145
  11. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  12. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +1 -1
  13. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +2 -2
  14. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
  15. package/SVF-doxygen/html/html/functions_func_l.html +2 -2
  16. package/SVF-doxygen/html/html/functions_l.html +2 -2
  17. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  18. package/SVF-doxygen/html/html/search/functions_b.js +1 -1
  19. package/SVF-doxygen/html/html/svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  20. package/SVF-doxygen/html/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +1 -1
  21. package/package.json +1 -1
  22. package/svf-llvm/include/SVF-LLVM/LLVMModule.h +1 -1
  23. package/svf-llvm/lib/LLVMModule.cpp +14 -6
@@ -230,8 +230,8 @@ Private Member Functions</h2></td></tr>
230
230
  <tr class="separator:a0b46a2a5ff2165d17993a071d9cc82c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
231
231
  <tr class="memitem:a298966366b02d0a34f409c2c77da3789"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a> (const std::vector&lt; <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> &gt; &amp;moduleNameVec)</td></tr>
232
232
  <tr class="separator:a298966366b02d0a34f409c2c77da3789"><td class="memSeparator" colspan="2">&#160;</td></tr>
233
- <tr class="memitem:a9247b3240ea36913baf7e7aa6d4a37e8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#a9247b3240ea36913baf7e7aa6d4a37e8">loadExtModules</a> ()</td></tr>
234
- <tr class="separator:a9247b3240ea36913baf7e7aa6d4a37e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
233
+ <tr class="memitem:a8820d1df9098db6eadf3a9c67e380e55"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#a8820d1df9098db6eadf3a9c67e380e55">loadExtAPIModules</a> ()</td></tr>
234
+ <tr class="separator:a8820d1df9098db6eadf3a9c67e380e55"><td class="memSeparator" colspan="2">&#160;</td></tr>
235
235
  <tr class="memitem:a8af6b911b728713f66f7c809d5c0fbf1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#a8af6b911b728713f66f7c809d5c0fbf1">addSVFMain</a> ()</td></tr>
236
236
  <tr class="separator:a8af6b911b728713f66f7c809d5c0fbf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
237
237
  <tr class="memitem:a4ca8c4678a7fefe26372fc1f4b2880fd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#a4ca8c4678a7fefe26372fc1f4b2880fd">createSVFDataStructure</a> ()</td></tr>
@@ -941,99 +941,99 @@ Friends</h2></td></tr>
941
941
  </table>
942
942
  </div><div class="memdoc">
943
943
 
944
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00669">669</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
945
- <div class="fragment"><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;{</div>
946
- <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; std::vector&lt;const Function*&gt; ctor_funcs;</div>
947
- <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; std::vector&lt;const Function*&gt; dtor_funcs;</div>
948
- <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* orgMain = 0;</div>
949
- <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mainMod = <span class="keyword">nullptr</span>;</div>
950
- <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; </div>
951
- <div class="line"><a name="l00676"></a><span class="lineno"> 676</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>
952
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; {</div>
953
- <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
954
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</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>
955
- <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {</div>
956
- <div class="line"><a name="l00681"></a><span class="lineno"> 681</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>
957
- <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; {</div>
958
- <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
959
- <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div>
960
- <div class="line"><a name="l00685"></a><span class="lineno"> 685</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>
961
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; {</div>
962
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
963
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; }</div>
964
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; }</div>
965
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; </div>
966
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="comment">// Find main function</span></div>
967
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;func : mod)</div>
968
- <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; {</div>
969
- <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keyword">auto</span> funName = func.getName();</div>
970
- <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; </div>
971
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</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>
972
- <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; </div>
973
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">if</span> (funName.equals(<span class="stringliteral">&quot;main&quot;</span>))</div>
974
- <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div>
975
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; orgMain = &amp;func;</div>
976
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; mainMod = &amp;mod;</div>
977
- <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; }</div>
978
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; }</div>
979
- <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; }</div>
944
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00677">677</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
945
+ <div class="fragment"><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;{</div>
946
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; std::vector&lt;const Function*&gt; ctor_funcs;</div>
947
+ <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; std::vector&lt;const Function*&gt; dtor_funcs;</div>
948
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* orgMain = 0;</div>
949
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mainMod = <span class="keyword">nullptr</span>;</div>
950
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; </div>
951
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</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>
952
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; {</div>
953
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
954
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</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>
955
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; {</div>
956
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</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>
957
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; {</div>
958
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
959
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; }</div>
960
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</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>
961
+ <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; {</div>
962
+ <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&amp;global);</div>
963
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; }</div>
964
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div>
965
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; </div>
966
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="comment">// Find main function</span></div>
967
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;func : mod)</div>
968
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div>
969
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keyword">auto</span> funName = func.getName();</div>
970
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; </div>
971
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</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>
980
972
  <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; </div>
981
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="comment">// Only create svf.main when the original main function is found, and also</span></div>
982
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="comment">// there are global contructor or destructor functions.</span></div>
983
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</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>
984
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; (ctor_funcs.size() &gt; 0 || dtor_funcs.size() &gt; 0))</div>
985
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; {</div>
986
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; assert(mainMod &amp;&amp; <span class="stringliteral">&quot;Module with main function not found.&quot;</span>);</div>
987
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; M = *mainMod;</div>
988
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="comment">// char **</span></div>
989
- <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i8ptr2 = PointerType::getInt8PtrTy(M.getContext())-&gt;getPointerTo();</div>
990
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i32 = IntegerType::getInt32Ty(M.getContext());</div>
991
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="comment">// define void @svf.main(i32, i8**, i8**)</span></div>
992
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 9)</span></div>
993
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; FunctionCallee svfmainFn = M.getOrInsertFunction(</div>
994
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
995
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; Type::getVoidTy(M.getContext()),</div>
996
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; i32,i8ptr2,i8ptr2</div>
997
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; );</div>
998
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast&lt;Function&gt;(svfmainFn.getCallee());</div>
999
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;<span class="preprocessor">#else</span></div>
1000
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast&lt;Function&gt;(M.getOrInsertFunction(</div>
1001
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
1002
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; Type::getVoidTy(M.getContext()),</div>
1003
- <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; i32,i8ptr2,i8ptr2</div>
1004
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; ));</div>
1005
- <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;<span class="preprocessor">#endif</span></div>
1006
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; svfmain-&gt;setCallingConv(llvm::CallingConv::C);</div>
1007
- <div class="line"><a name="l00732"></a><span class="lineno"> 732</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>
1008
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <a class="code" href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">IRBuilder</a> Builder(block);</div>
1009
- <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="comment">// emit &quot;call void @ctor()&quot;. ctor_funcs is sorted so the functions are</span></div>
1010
- <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1011
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; ctor : ctor_funcs)</div>
1012
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; {</div>
1013
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(</div>
1014
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; ctor-&gt;getName(),</div>
1015
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; Type::getVoidTy(M.getContext())</div>
1016
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; );</div>
1017
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; Builder.CreateCall(target);</div>
1018
- <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; }</div>
1019
- <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="comment">// main() should be called after all ctor functions and before dtor</span></div>
1020
- <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="comment">// functions.</span></div>
1021
- <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; Function::arg_iterator arg_it = svfmain-&gt;arg_begin();</div>
1022
- <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* args[] = {arg_it, arg_it + 1, arg_it + 2};</div>
1023
- <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordtype">size_t</span> cnt = orgMain-&gt;arg_size();</div>
1024
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; assert(cnt &lt;= 3 &amp;&amp; <span class="stringliteral">&quot;Too many arguments for main()&quot;</span>);</div>
1025
- <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; Builder.CreateCall(orgMain, llvm::ArrayRef&lt;Value*&gt;(args, args + cnt));</div>
1026
- <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="comment">// emit &quot;call void @dtor()&quot;. dtor_funcs is sorted so the functions are</span></div>
1027
- <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1028
- <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; dtor : dtor_funcs)</div>
1029
- <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; {</div>
1030
- <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(dtor-&gt;getName(), Type::getVoidTy(M.getContext()));</div>
1031
- <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; Builder.CreateCall(target);</div>
1032
- <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; }</div>
1033
- <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="comment">// return;</span></div>
1034
- <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; Builder.CreateRetVoid();</div>
1035
- <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div>
1036
- <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;}</div>
973
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">if</span> (funName.equals(<span class="stringliteral">&quot;main&quot;</span>))</div>
974
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; {</div>
975
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; orgMain = &amp;func;</div>
976
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; mainMod = &amp;mod;</div>
977
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div>
978
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; }</div>
979
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; }</div>
980
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; </div>
981
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="comment">// Only create svf.main when the original main function is found, and also</span></div>
982
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="comment">// there are global contructor or destructor functions.</span></div>
983
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</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>
984
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; (ctor_funcs.size() &gt; 0 || dtor_funcs.size() &gt; 0))</div>
985
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; {</div>
986
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; assert(mainMod &amp;&amp; <span class="stringliteral">&quot;Module with main function not found.&quot;</span>);</div>
987
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; M = *mainMod;</div>
988
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="comment">// char **</span></div>
989
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i8ptr2 = PointerType::getInt8PtrTy(M.getContext())-&gt;getPointerTo();</div>
990
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i32 = IntegerType::getInt32Ty(M.getContext());</div>
991
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="comment">// define void @svf.main(i32, i8**, i8**)</span></div>
992
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 9)</span></div>
993
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; FunctionCallee svfmainFn = M.getOrInsertFunction(</div>
994
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
995
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; Type::getVoidTy(M.getContext()),</div>
996
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; i32,i8ptr2,i8ptr2</div>
997
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; );</div>
998
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast&lt;Function&gt;(svfmainFn.getCallee());</div>
999
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;<span class="preprocessor">#else</span></div>
1000
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast&lt;Function&gt;(M.getOrInsertFunction(</div>
1001
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
1002
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; Type::getVoidTy(M.getContext()),</div>
1003
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; i32,i8ptr2,i8ptr2</div>
1004
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; ));</div>
1005
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;<span class="preprocessor">#endif</span></div>
1006
+ <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; svfmain-&gt;setCallingConv(llvm::CallingConv::C);</div>
1007
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</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>
1008
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <a class="code" href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">IRBuilder</a> Builder(block);</div>
1009
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="comment">// emit &quot;call void @ctor()&quot;. ctor_funcs is sorted so the functions are</span></div>
1010
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1011
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; ctor : ctor_funcs)</div>
1012
+ <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; {</div>
1013
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(</div>
1014
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; ctor-&gt;getName(),</div>
1015
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; Type::getVoidTy(M.getContext())</div>
1016
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; );</div>
1017
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; Builder.CreateCall(target);</div>
1018
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; }</div>
1019
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="comment">// main() should be called after all ctor functions and before dtor</span></div>
1020
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="comment">// functions.</span></div>
1021
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; Function::arg_iterator arg_it = svfmain-&gt;arg_begin();</div>
1022
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* args[] = {arg_it, arg_it + 1, arg_it + 2};</div>
1023
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordtype">size_t</span> cnt = orgMain-&gt;arg_size();</div>
1024
+ <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; assert(cnt &lt;= 3 &amp;&amp; <span class="stringliteral">&quot;Too many arguments for main()&quot;</span>);</div>
1025
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; Builder.CreateCall(orgMain, llvm::ArrayRef&lt;Value*&gt;(args, args + cnt));</div>
1026
+ <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="comment">// emit &quot;call void @dtor()&quot;. dtor_funcs is sorted so the functions are</span></div>
1027
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="comment">// emitted in the order of priority</span></div>
1028
+ <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; dtor : dtor_funcs)</div>
1029
+ <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; {</div>
1030
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keyword">auto</span> target = M.getOrInsertFunction(dtor-&gt;getName(), Type::getVoidTy(M.getContext()));</div>
1031
+ <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; Builder.CreateCall(target);</div>
1032
+ <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; }</div>
1033
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="comment">// return;</span></div>
1034
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; Builder.CreateRetVoid();</div>
1035
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; }</div>
1036
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;}</div>
1037
1037
  </div><!-- fragment -->
1038
1038
  </div>
1039
1039
  </div>
@@ -1063,51 +1063,51 @@ Friends</h2></td></tr>
1063
1063
 
1064
1064
  <p>Create SVFTypes. </p>
1065
1065
 
1066
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01147">1147</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1067
- <div class="fragment"><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;{</div>
1068
- <div class="line"><a name="l01149"></a><span class="lineno"> 1149</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>
1069
- <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="stringliteral">&quot;SVFType has been added before&quot;</span>);</div>
1070
- <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; </div>
1071
- <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype;</div>
1072
- <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pt = SVFUtil::dyn_cast&lt;PointerType&gt;(T))</div>
1073
- <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(pt)));</div>
1074
- <div class="line"><a name="l01155"></a><span class="lineno"> 1155</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>
1075
- <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; {</div>
1076
- <div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keyword">auto</span> svfIntT = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIntegerType.html">SVFIntegerType</a>();</div>
1077
- <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordtype">unsigned</span> signWidth = intT-&gt;getBitWidth();</div>
1078
- <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; assert(signWidth &lt; INT16_MAX &amp;&amp; <span class="stringliteral">&quot;Integer width too big&quot;</span>);</div>
1079
- <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; svfIntT-&gt;setSignAndWidth(intT-&gt;getSignBit() ? -signWidth : signWidth);</div>
1080
- <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; svftype = svfIntT;</div>
1081
- <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; }</div>
1082
- <div class="line"><a name="l01163"></a><span class="lineno"> 1163</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>
1083
- <div class="line"><a name="l01164"></a><span class="lineno"> 1164</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>
1084
- <div class="line"><a name="l01165"></a><span class="lineno"> 1165</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>
1085
- <div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; {</div>
1086
- <div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keyword">auto</span> svfst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>();</div>
1087
- <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordflow">if</span> (st-&gt;hasName())</div>
1088
- <div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; svfst-&gt;setName(st-&gt;getName().str());</div>
1089
- <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; svftype = svfst;</div>
1090
- <div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; }</div>
1091
- <div class="line"><a name="l01172"></a><span class="lineno"> 1172</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>
1092
- <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; {</div>
1093
- <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keyword">auto</span> svfat = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>();</div>
1094
- <div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; svfat-&gt;setNumOfElement(at-&gt;getNumElements());</div>
1095
- <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; svfat-&gt;setTypeOfElement(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(at-&gt;getElementType()));</div>
1096
- <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; svftype = svfat;</div>
1097
- <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; }</div>
1098
- <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="keywordflow">else</span></div>
1099
- <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; {</div>
1100
- <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>;</div>
1101
- <div class="line"><a name="l01182"></a><span class="lineno"> 1182</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());</div>
1102
- <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; llvm::raw_string_ostream(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>) &lt;&lt; *T;</div>
1103
- <div class="line"><a name="l01184"></a><span class="lineno"> 1184</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>
1104
- <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; svftype = ot;</div>
1066
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01155">1155</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1067
+ <div class="fragment"><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;{</div>
1068
+ <div class="line"><a name="l01157"></a><span class="lineno"> 1157</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>
1069
+ <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="stringliteral">&quot;SVFType has been added before&quot;</span>);</div>
1070
+ <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; </div>
1071
+ <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype;</div>
1072
+ <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pt = SVFUtil::dyn_cast&lt;PointerType&gt;(T))</div>
1073
+ <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(pt)));</div>
1074
+ <div class="line"><a name="l01163"></a><span class="lineno"> 1163</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>
1075
+ <div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; {</div>
1076
+ <div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <span class="keyword">auto</span> svfIntT = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIntegerType.html">SVFIntegerType</a>();</div>
1077
+ <div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordtype">unsigned</span> signWidth = intT-&gt;getBitWidth();</div>
1078
+ <div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; assert(signWidth &lt; INT16_MAX &amp;&amp; <span class="stringliteral">&quot;Integer width too big&quot;</span>);</div>
1079
+ <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; svfIntT-&gt;setSignAndWidth(intT-&gt;getSignBit() ? -signWidth : signWidth);</div>
1080
+ <div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; svftype = svfIntT;</div>
1081
+ <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; }</div>
1082
+ <div class="line"><a name="l01171"></a><span class="lineno"> 1171</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>
1083
+ <div class="line"><a name="l01172"></a><span class="lineno"> 1172</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>
1084
+ <div class="line"><a name="l01173"></a><span class="lineno"> 1173</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>
1085
+ <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; {</div>
1086
+ <div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keyword">auto</span> svfst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>();</div>
1087
+ <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keywordflow">if</span> (st-&gt;hasName())</div>
1088
+ <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; svfst-&gt;setName(st-&gt;getName().str());</div>
1089
+ <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; svftype = svfst;</div>
1090
+ <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; }</div>
1091
+ <div class="line"><a name="l01180"></a><span class="lineno"> 1180</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>
1092
+ <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; {</div>
1093
+ <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keyword">auto</span> svfat = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>();</div>
1094
+ <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; svfat-&gt;setNumOfElement(at-&gt;getNumElements());</div>
1095
+ <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; svfat-&gt;setTypeOfElement(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(at-&gt;getElementType()));</div>
1096
+ <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; svftype = svfat;</div>
1105
1097
  <div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; }</div>
1106
- <div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; </div>
1107
- <div class="line"><a name="l01188"></a><span class="lineno"> 1188</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>
1108
- <div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div>
1109
- <div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="keywordflow">return</span> svftype;</div>
1110
- <div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;}</div>
1098
+ <div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="keywordflow">else</span></div>
1099
+ <div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; {</div>
1100
+ <div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>;</div>
1101
+ <div class="line"><a name="l01190"></a><span class="lineno"> 1190</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());</div>
1102
+ <div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; llvm::raw_string_ostream(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>) &lt;&lt; *T;</div>
1103
+ <div class="line"><a name="l01192"></a><span class="lineno"> 1192</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>
1104
+ <div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; svftype = ot;</div>
1105
+ <div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; }</div>
1106
+ <div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; </div>
1107
+ <div class="line"><a name="l01196"></a><span class="lineno"> 1196</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>
1108
+ <div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div>
1109
+ <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="keywordflow">return</span> svftype;</div>
1110
+ <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;}</div>
1111
1111
  </div><!-- fragment -->
1112
1112
  </div>
1113
1113
  </div>
@@ -1134,20 +1134,20 @@ Friends</h2></td></tr>
1134
1134
  </table>
1135
1135
  </div><div class="memdoc">
1136
1136
 
1137
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00150">150</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1138
- <div class="fragment"><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;{</div>
1139
- <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">preProcessed</a>==<span class="keyword">false</span>)</div>
1140
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div>
1141
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; </div>
1142
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac7c646a78c989807c52263fc35fb3628">buildFunToFunMap</a>();</div>
1143
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aaab03cb6ff665bc008c67b866ba81e47">buildGlobalDefToRepMap</a>();</div>
1144
- <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; </div>
1145
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3a718b0a27c2d13878c0718af97ad73d">Options::SVFMain</a>())</div>
1146
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8af6b911b728713f66f7c809d5c0fbf1">addSVFMain</a>();</div>
1147
- <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; </div>
1148
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4ca8c4678a7fefe26372fc1f4b2880fd">createSVFDataStructure</a>();</div>
1149
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac6a5540354696f4c9170e0a5832ba70e">initSVFFunction</a>();</div>
1150
- <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div>
1137
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00151">151</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1138
+ <div class="fragment"><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;{</div>
1139
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">preProcessed</a>==<span class="keyword">false</span>)</div>
1140
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div>
1141
+ <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
1142
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac7c646a78c989807c52263fc35fb3628">buildFunToFunMap</a>();</div>
1143
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aaab03cb6ff665bc008c67b866ba81e47">buildGlobalDefToRepMap</a>();</div>
1144
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; </div>
1145
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3a718b0a27c2d13878c0718af97ad73d">Options::SVFMain</a>())</div>
1146
+ <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8af6b911b728713f66f7c809d5c0fbf1">addSVFMain</a>();</div>
1147
+ <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; </div>
1148
+ <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4ca8c4678a7fefe26372fc1f4b2880fd">createSVFDataStructure</a>();</div>
1149
+ <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac6a5540354696f4c9170e0a5832ba70e">initSVFFunction</a>();</div>
1150
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;}</div>
1151
1151
  </div><!-- fragment -->
1152
1152
  </div>
1153
1153
  </div>
@@ -1177,87 +1177,87 @@ Friends</h2></td></tr>
1177
1177
  <p>Fun decl --&gt; def</p>
1178
1178
  <p>Fun def --&gt; decls</p>
1179
1179
 
1180
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00764">764</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1181
- <div class="fragment"><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;{</div>
1182
- <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> funDecls, funDefs;</div>
1183
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;string&gt;</a> declNames, defNames, intersectNames;</div>
1184
- <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, const Function*&gt;</a> NameToFunDefMapTy;</div>
1185
- <div class="line"><a name="l00769"></a><span class="lineno"> 769</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>
1186
- <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; </div>
1187
- <div class="line"><a name="l00771"></a><span class="lineno"> 771</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>
1188
- <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; {</div>
1189
- <div class="line"><a name="l00774"></a><span class="lineno"> 774</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>
1190
- <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div>
1191
- <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
1192
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; {</div>
1193
- <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; funDecls.insert(&amp;fun);</div>
1194
- <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; declNames.insert(fun.getName().str());</div>
1195
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; }</div>
1196
- <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">else</span></div>
1197
- <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; {</div>
1198
- <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; funDefs.insert(&amp;fun);</div>
1199
- <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; defNames.insert(fun.getName().str());</div>
1200
- <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; }</div>
1201
- <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; }</div>
1202
- <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; }</div>
1203
- <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="comment">// Find the intersectNames</span></div>
1204
- <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; std::set_intersection(</div>
1205
- <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; declNames.begin(), declNames.end(), defNames.begin(), defNames.end(),</div>
1206
- <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; std::inserter(intersectNames, intersectNames.end()));</div>
1207
- <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; </div>
1208
- <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; NameToFunDefMapTy nameToFunDefMap;</div>
1209
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
1210
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; {</div>
1211
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1212
- <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1213
- <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; {</div>
1214
- <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; nameToFunDefMap.emplace(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName), fdef);</div>
1215
- <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; }</div>
1216
- <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; }</div>
1217
- <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; </div>
1218
- <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; NameToFunDeclsMapTy nameToFunDeclsMap;</div>
1219
- <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
1220
- <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; {</div>
1221
- <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1222
- <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1223
- <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; {</div>
1224
- <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="comment">// pair with key funName will be created automatically if it does</span></div>
1225
- <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="comment">// not exist</span></div>
1226
- <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; nameToFunDeclsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName)].insert(fdecl);</div>
1227
- <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; }</div>
1228
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; }</div>
1229
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; </div>
1230
- <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
1231
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; {</div>
1232
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1233
- <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; NameToFunDefMapTy::iterator mit;</div>
1234
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end() &amp;&amp;</div>
1235
- <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; (mit = nameToFunDefMap.find(funName)) != nameToFunDefMap.end())</div>
1236
- <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; {</div>
1237
- <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = mit-&gt;second;</div>
1238
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div>
1239
- <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; }</div>
1240
- <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; </div>
1241
- <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
1242
- <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; {</div>
1243
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1244
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div>
1245
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keywordflow">continue</span>;</div>
1246
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div>
1247
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div>
1248
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">continue</span>;</div>
1249
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; </div>
1250
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[fdef];</div>
1251
- <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; declsSet = mit-&gt;second;</div>
1252
- <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="comment">// Reserve space for decls to avoid more than 1 reallocation</span></div>
1253
- <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; decls.reserve(decls.size() + declsSet.size());</div>
1254
- <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; </div>
1255
- <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* decl : declsSet)</div>
1256
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; {</div>
1257
- <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; decls.push_back(decl);</div>
1258
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; }</div>
1259
- <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div>
1260
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;}</div>
1180
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00772">772</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1181
+ <div class="fragment"><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;{</div>
1182
+ <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> funDecls, funDefs;</div>
1183
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;string&gt;</a> declNames, defNames, intersectNames;</div>
1184
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;string, const Function*&gt;</a> NameToFunDefMapTy;</div>
1185
+ <div class="line"><a name="l00777"></a><span class="lineno"> 777</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>
1186
+ <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; </div>
1187
+ <div class="line"><a name="l00779"></a><span class="lineno"> 779</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>
1188
+ <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; {</div>
1189
+ <div class="line"><a name="l00782"></a><span class="lineno"> 782</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>
1190
+ <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; {</div>
1191
+ <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
1192
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; {</div>
1193
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; funDecls.insert(&amp;fun);</div>
1194
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; declNames.insert(fun.getName().str());</div>
1195
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; }</div>
1196
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">else</span></div>
1197
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; {</div>
1198
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; funDefs.insert(&amp;fun);</div>
1199
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; defNames.insert(fun.getName().str());</div>
1200
+ <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; }</div>
1201
+ <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div>
1202
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div>
1203
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="comment">// Find the intersectNames</span></div>
1204
+ <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; std::set_intersection(</div>
1205
+ <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; declNames.begin(), declNames.end(), defNames.begin(), defNames.end(),</div>
1206
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; std::inserter(intersectNames, intersectNames.end()));</div>
1207
+ <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; </div>
1208
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; NameToFunDefMapTy nameToFunDefMap;</div>
1209
+ <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
1210
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; {</div>
1211
+ <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1212
+ <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1213
+ <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; {</div>
1214
+ <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; nameToFunDefMap.emplace(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName), fdef);</div>
1215
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; }</div>
1216
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; }</div>
1217
+ <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; </div>
1218
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; NameToFunDeclsMapTy nameToFunDeclsMap;</div>
1219
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
1220
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; {</div>
1221
+ <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1222
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
1223
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; {</div>
1224
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="comment">// pair with key funName will be created automatically if it does</span></div>
1225
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="comment">// not exist</span></div>
1226
+ <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; nameToFunDeclsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName)].insert(fdecl);</div>
1227
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; }</div>
1228
+ <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; }</div>
1229
+ <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; </div>
1230
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
1231
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; {</div>
1232
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordtype">string</span> funName = fdecl-&gt;getName().str();</div>
1233
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; NameToFunDefMapTy::iterator mit;</div>
1234
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end() &amp;&amp;</div>
1235
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; (mit = nameToFunDefMap.find(funName)) != nameToFunDefMap.end())</div>
1236
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; {</div>
1237
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = mit-&gt;second;</div>
1238
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; }</div>
1239
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; }</div>
1240
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; </div>
1241
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
1242
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; {</div>
1243
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordtype">string</span> funName = fdef-&gt;getName().str();</div>
1244
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div>
1245
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">continue</span>;</div>
1246
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div>
1247
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div>
1248
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">continue</span>;</div>
1249
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; </div>
1250
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; std::vector&lt;const Function*&gt;&amp; decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[fdef];</div>
1251
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; declsSet = mit-&gt;second;</div>
1252
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="comment">// Reserve space for decls to avoid more than 1 reallocation</span></div>
1253
+ <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; decls.reserve(decls.size() + declsSet.size());</div>
1254
+ <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; </div>
1255
+ <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* decl : declsSet)</div>
1256
+ <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; {</div>
1257
+ <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; decls.push_back(decl);</div>
1258
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; }</div>
1259
+ <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; }</div>
1260
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;}</div>
1261
1261
  </div><!-- fragment -->
1262
1262
  </div>
1263
1263
  </div>
@@ -1284,47 +1284,47 @@ Friends</h2></td></tr>
1284
1284
  </table>
1285
1285
  </div><div class="memdoc">
1286
1286
 
1287
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00851">851</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1288
- <div class="fragment"><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160;{</div>
1289
- <div class="line"><a name="l00853"></a><span class="lineno"> 853</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>
1290
- <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; NameToGlobalsMapTy nameToGlobalsMap;</div>
1291
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</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>
1292
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; {</div>
1293
- <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
1294
- <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : mod.globals())</div>
1295
- <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; {</div>
1296
- <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">if</span> (global.hasPrivateLinkage())</div>
1297
- <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keywordflow">continue</span>;</div>
1298
- <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keywordtype">string</span> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> = global.getName().str();</div>
1299
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>.empty())</div>
1300
- <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">continue</span>;</div>
1301
- <div class="line"><a name="l00865"></a><span class="lineno"> 865</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>
1302
- <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; }</div>
1303
- <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; }</div>
1304
- <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; </div>
1305
- <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pair : nameToGlobalsMap)</div>
1306
- <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; {</div>
1307
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;GlobalVariable*&gt;</a> &amp;globals = pair.second;</div>
1308
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; </div>
1309
- <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> repIt =</div>
1310
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; std::find_if(globals.begin(), globals.end(),</div>
1311
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; [](<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* g)</div>
1312
- <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; {</div>
1313
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; return g-&gt;hasInitializer();</div>
1314
- <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; });</div>
1315
- <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* rep =</div>
1316
- <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; repIt != globals.end()</div>
1317
- <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; ? *repIt</div>
1318
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="comment">// When there is no initializer, just pick the first one.</span></div>
1319
- <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; : (assert(!globals.empty() &amp;&amp; <span class="stringliteral">&quot;Empty global set&quot;</span>),</div>
1320
- <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; *globals.begin());</div>
1321
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; </div>
1322
- <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* cur : globals)</div>
1323
- <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; {</div>
1324
- <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>[cur] = rep;</div>
1325
- <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; }</div>
1326
- <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; }</div>
1327
- <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;}</div>
1287
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00859">859</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1288
+ <div class="fragment"><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;{</div>
1289
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</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>
1290
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; NameToGlobalsMapTy nameToGlobalsMap;</div>
1291
+ <div class="line"><a name="l00863"></a><span class="lineno"> 863</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>
1292
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; {</div>
1293
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="comment">// Collect ctor and dtor functions</span></div>
1294
+ <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : mod.globals())</div>
1295
+ <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; {</div>
1296
+ <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordflow">if</span> (global.hasPrivateLinkage())</div>
1297
+ <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">continue</span>;</div>
1298
+ <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordtype">string</span> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> = global.getName().str();</div>
1299
+ <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>.empty())</div>
1300
+ <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">continue</span>;</div>
1301
+ <div class="line"><a name="l00873"></a><span class="lineno"> 873</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>
1302
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; }</div>
1303
+ <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; }</div>
1304
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; </div>
1305
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pair : nameToGlobalsMap)</div>
1306
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; {</div>
1307
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;GlobalVariable*&gt;</a> &amp;globals = pair.second;</div>
1308
+ <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; </div>
1309
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> repIt =</div>
1310
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; std::find_if(globals.begin(), globals.end(),</div>
1311
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; [](<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* g)</div>
1312
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; {</div>
1313
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; return g-&gt;hasInitializer();</div>
1314
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; });</div>
1315
+ <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* rep =</div>
1316
+ <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; repIt != globals.end()</div>
1317
+ <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; ? *repIt</div>
1318
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="comment">// When there is no initializer, just pick the first one.</span></div>
1319
+ <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; : (assert(!globals.empty() &amp;&amp; <span class="stringliteral">&quot;Empty global set&quot;</span>),</div>
1320
+ <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; *globals.begin());</div>
1321
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; </div>
1322
+ <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* cur : globals)</div>
1323
+ <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; {</div>
1324
+ <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>[cur] = rep;</div>
1325
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; }</div>
1326
+ <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; }</div>
1327
+ <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;}</div>
1328
1328
  </div><!-- fragment -->
1329
1329
  </div>
1330
1330
  </div>
@@ -1359,22 +1359,23 @@ Friends</h2></td></tr>
1359
1359
  <div class="line"><a name="l00115"></a><span class="lineno"> 115</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>
1360
1360
  <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
1361
1361
  <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a>(moduleNameVec);</div>
1362
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; </div>
1363
- <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (!moduleNameVec.empty())</div>
1364
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div>
1365
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html#ab930bb5449538c4d0da1297a103788a1">SVFModule::getSVFModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#acaba1ff38ed1fdd8a9a1251a1b36be92">setModuleIdentifier</a>(moduleNameVec.front());</div>
1366
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div>
1367
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; </div>
1368
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#af8edfe08027020f14b81b44362c6018e">build</a>();</div>
1369
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
1370
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">double</span> endSVFModuleTime = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keyword">true</span>);</div>
1371
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#aa4950ec26b66a085ad38ac154b789db5">SVFStat::timeOfBuildingLLVMModule</a> =</div>
1372
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; (endSVFModuleTime - startSVFModuleTime) / <a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div>
1373
- <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; </div>
1374
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a15e97e3f2ba62d3fe444bb17cd637dbd">buildSymbolTable</a>();</div>
1375
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">// Don&#39;t releaseLLVMModuleSet() here, as IRBuilder might still need LLVMMoudleSet</span></div>
1376
- <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFModule.html#ab930bb5449538c4d0da1297a103788a1">SVFModule::getSVFModule</a>();</div>
1377
- <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;}</div>
1362
+ <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8820d1df9098db6eadf3a9c67e380e55">loadExtAPIModules</a>();</div>
1363
+ <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
1364
+ <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (!moduleNameVec.empty())</div>
1365
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div>
1366
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html#ab930bb5449538c4d0da1297a103788a1">SVFModule::getSVFModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#acaba1ff38ed1fdd8a9a1251a1b36be92">setModuleIdentifier</a>(moduleNameVec.front());</div>
1367
+ <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div>
1368
+ <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; </div>
1369
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#af8edfe08027020f14b81b44362c6018e">build</a>();</div>
1370
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
1371
+ <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">double</span> endSVFModuleTime = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keyword">true</span>);</div>
1372
+ <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#aa4950ec26b66a085ad38ac154b789db5">SVFStat::timeOfBuildingLLVMModule</a> =</div>
1373
+ <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; (endSVFModuleTime - startSVFModuleTime) / <a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div>
1374
+ <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; </div>
1375
+ <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a15e97e3f2ba62d3fe444bb17cd637dbd">buildSymbolTable</a>();</div>
1376
+ <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="comment">// Don&#39;t releaseLLVMModuleSet() here, as IRBuilder might still need LLVMMoudleSet</span></div>
1377
+ <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFModule.html#ab930bb5449538c4d0da1297a103788a1">SVFModule::getSVFModule</a>();</div>
1378
+ <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;}</div>
1378
1379
  </div><!-- fragment -->
1379
1380
  </div>
1380
1381
  </div>
@@ -1445,19 +1446,19 @@ Friends</h2></td></tr>
1445
1446
  </div><div class="memdoc">
1446
1447
  <p>building symbol table</p>
1447
1448
 
1448
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00135">135</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1449
- <div class="fragment"><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;{</div>
1450
- <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">double</span> startSymInfoTime = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keyword">true</span>);</div>
1451
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</div>
1452
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div>
1453
- <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4550f2fb815882edfb666ac818792064">SVFUtil::pasMsg</a>(<span class="stringliteral">&quot;Building Symbol table ...\n&quot;</span>));</div>
1454
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html">SymbolTableBuilder</a> builder(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>);</div>
1455
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; builder.buildMemModel(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>);</div>
1456
- <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div>
1457
- <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordtype">double</span> endSymInfoTime = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keyword">true</span>);</div>
1458
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">SVFStat::timeOfBuildingSymbolTable</a> =</div>
1459
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; (endSymInfoTime - startSymInfoTime) / <a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div>
1460
- <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;}</div>
1449
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00136">136</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1450
+ <div class="fragment"><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;{</div>
1451
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">double</span> startSymInfoTime = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keyword">true</span>);</div>
1452
+ <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</div>
1453
+ <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div>
1454
+ <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4550f2fb815882edfb666ac818792064">SVFUtil::pasMsg</a>(<span class="stringliteral">&quot;Building Symbol table ...\n&quot;</span>));</div>
1455
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html">SymbolTableBuilder</a> builder(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>);</div>
1456
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; builder.buildMemModel(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>);</div>
1457
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div>
1458
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordtype">double</span> endSymInfoTime = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keyword">true</span>);</div>
1459
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">SVFStat::timeOfBuildingSymbolTable</a> =</div>
1460
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; (endSymInfoTime - startSymInfoTime) / <a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div>
1461
+ <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;}</div>
1461
1462
  </div><!-- fragment -->
1462
1463
  </div>
1463
1464
  </div>
@@ -1491,59 +1492,59 @@ Friends</h2></td></tr>
1491
1492
  <p>Array's flatten field infor is the same as its element's flatten infor.</p>
1492
1493
  <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>
1493
1494
 
1494
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01196">1196</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1495
- <div class="fragment"><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;{</div>
1496
- <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty-&gt;getNumElements();</div>
1497
- <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty-&gt;getElementType();</div>
1498
- <div class="line"><a name="l01200"></a><span class="lineno"> 1200</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>
1499
- <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; {</div>
1500
- <div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; totalElemNum *= aty-&gt;getNumElements();</div>
1501
- <div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; elemTy = aty-&gt;getElementType();</div>
1502
- <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; }</div>
1503
- <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; </div>
1504
- <div class="line"><a name="l01206"></a><span class="lineno"> 1206</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>
1505
- <div class="line"><a name="l01207"></a><span class="lineno"> 1207</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>
1506
- <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; </div>
1507
- <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <span class="keywordflow">if</span> (totalElemNum == 0)</div>
1508
- <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; {</div>
1509
- <div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, elemSvfType, 0);</div>
1510
- <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div>
1511
- <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfType);</div>
1512
- <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfType);</div>
1513
- <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1514
- <div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; }</div>
1515
- <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; </div>
1516
- <div class="line"><a name="l01221"></a><span class="lineno"> 1221</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>
1517
- <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1518
- <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1519
- <div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; j++)</div>
1520
- <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; {</div>
1521
- <div class="line"><a name="l01226"></a><span class="lineno"> 1226</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>
1522
- <div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div>
1523
- <div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; }</div>
1524
- <div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; </div>
1525
- <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> outArrayElemNum = ty-&gt;getNumElements();</div>
1526
- <div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; outArrayElemNum; ++i)</div>
1527
- <div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; {</div>
1528
- <div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="keyword">auto</span> idx = (i * nfE * totalElemNum) / outArrayElemNum;</div>
1529
- <div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, elemSvfType, idx);</div>
1530
- <div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; }</div>
1531
- <div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; </div>
1532
- <div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; totalElemNum; ++i)</div>
1533
- <div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; {</div>
1534
- <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; ++j)</div>
1535
- <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; {</div>
1536
- <div class="line"><a name="l01243"></a><span class="lineno"> 1243</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>
1537
- <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(et);</div>
1538
- <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; }</div>
1539
- <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; }</div>
1540
- <div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; </div>
1541
- <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &amp;&amp;</div>
1542
- <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <span class="stringliteral">&quot;typeForArray size incorrect!!!&quot;</span>);</div>
1543
- <div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfF, nfE * totalElemNum);</div>
1544
- <div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; </div>
1545
- <div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1546
- <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;}</div>
1495
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01204">1204</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1496
+ <div class="fragment"><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;{</div>
1497
+ <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty-&gt;getNumElements();</div>
1498
+ <div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty-&gt;getElementType();</div>
1499
+ <div class="line"><a name="l01208"></a><span class="lineno"> 1208</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>
1500
+ <div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; {</div>
1501
+ <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; totalElemNum *= aty-&gt;getNumElements();</div>
1502
+ <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; elemTy = aty-&gt;getElementType();</div>
1503
+ <div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; }</div>
1504
+ <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; </div>
1505
+ <div class="line"><a name="l01214"></a><span class="lineno"> 1214</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>
1506
+ <div class="line"><a name="l01215"></a><span class="lineno"> 1215</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>
1507
+ <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; </div>
1508
+ <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <span class="keywordflow">if</span> (totalElemNum == 0)</div>
1509
+ <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; {</div>
1510
+ <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, elemSvfType, 0);</div>
1511
+ <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div>
1512
+ <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfType);</div>
1513
+ <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfType);</div>
1514
+ <div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1515
+ <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; }</div>
1516
+ <div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; </div>
1517
+ <div class="line"><a name="l01229"></a><span class="lineno"> 1229</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>
1518
+ <div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1519
+ <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1520
+ <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; j++)</div>
1521
+ <div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; {</div>
1522
+ <div class="line"><a name="l01234"></a><span class="lineno"> 1234</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>
1523
+ <div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div>
1524
+ <div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; }</div>
1525
+ <div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; </div>
1526
+ <div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> outArrayElemNum = ty-&gt;getNumElements();</div>
1527
+ <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; outArrayElemNum; ++i)</div>
1528
+ <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; {</div>
1529
+ <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keyword">auto</span> idx = (i * nfE * totalElemNum) / outArrayElemNum;</div>
1530
+ <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, elemSvfType, idx);</div>
1531
+ <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; }</div>
1532
+ <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; </div>
1533
+ <div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; totalElemNum; ++i)</div>
1534
+ <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; {</div>
1535
+ <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; ++j)</div>
1536
+ <div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; {</div>
1537
+ <div class="line"><a name="l01251"></a><span class="lineno"> 1251</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>
1538
+ <div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(et);</div>
1539
+ <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; }</div>
1540
+ <div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; }</div>
1541
+ <div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; </div>
1542
+ <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &amp;&amp;</div>
1543
+ <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <span class="stringliteral">&quot;typeForArray size incorrect!!!&quot;</span>);</div>
1544
+ <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfF, nfE * totalElemNum);</div>
1545
+ <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; </div>
1546
+ <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1547
+ <div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;}</div>
1547
1548
  </div><!-- fragment -->
1548
1549
  </div>
1549
1550
  </div>
@@ -1575,18 +1576,18 @@ Friends</h2></td></tr>
1575
1576
  <p>Collect simple type (non-aggregate) info </p>
1576
1577
  <p>Only one field</p>
1577
1578
 
1578
- <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>
1579
- <div class="fragment"><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;{</div>
1580
- <div class="line"><a name="l01319"></a><span class="lineno"> 1319</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>
1581
- <div class="line"><a name="l01320"></a><span class="lineno"> 1320</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>
1582
- <div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, svfType, 0);</div>
1583
- <div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; </div>
1584
- <div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(svfType);</div>
1585
- <div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(svfType);</div>
1586
- <div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div>
1587
- <div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; </div>
1588
- <div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1589
- <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;}</div>
1579
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01324">1324</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1580
+ <div class="fragment"><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;{</div>
1581
+ <div class="line"><a name="l01327"></a><span class="lineno"> 1327</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>
1582
+ <div class="line"><a name="l01328"></a><span class="lineno"> 1328</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>
1583
+ <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, svfType, 0);</div>
1584
+ <div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; </div>
1585
+ <div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(svfType);</div>
1586
+ <div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(svfType);</div>
1587
+ <div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div>
1588
+ <div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; </div>
1589
+ <div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1590
+ <div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;}</div>
1590
1591
  </div><!-- fragment -->
1591
1592
  </div>
1592
1593
  </div>
@@ -1628,56 +1629,56 @@ Friends</h2></td></tr>
1628
1629
  <p>Fill in struct_info for T. Given a Struct type, we recursively extend and record its fields and types. </p>
1629
1630
  <p>The struct info should not be processed before</p>
1630
1631
 
1631
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01259">1259</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1632
- <div class="fragment"><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;{</div>
1633
- <div class="line"><a name="l01263"></a><span class="lineno"> 1263</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>
1634
- <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; </div>
1635
- <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div>
1636
- <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; numFields = 0;</div>
1637
- <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; <span class="comment">// The offset when considering array stride info</span></div>
1638
- <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div>
1639
- <div class="line"><a name="l01269"></a><span class="lineno"> 1269</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>
1640
- <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; {</div>
1641
- <div class="line"><a name="l01271"></a><span class="lineno"> 1271</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>
1642
- <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <span class="comment">// offset with int_32 (s32_t) is large enough and won&#39;t overflow</span></div>
1643
- <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(numFields, elemSvfTy, strideOffset);</div>
1644
- <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; </div>
1645
- <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(elemTy))</div>
1646
- <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; {</div>
1647
- <div class="line"><a name="l01277"></a><span class="lineno"> 1277</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>
1648
- <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1649
- <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1650
- <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <span class="comment">// Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div>
1651
- <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; ++j)</div>
1652
- <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; {</div>
1653
- <div class="line"><a name="l01283"></a><span class="lineno"> 1283</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>
1654
- <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div>
1655
- <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; }</div>
1656
- <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; numFields += nfF;</div>
1657
- <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; strideOffset += nfE;</div>
1658
- <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj &lt; nfE; ++tpj)</div>
1659
- <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; {</div>
1660
- <div class="line"><a name="l01290"></a><span class="lineno"> 1290</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>
1661
- <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(ty);</div>
1662
- <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; }</div>
1663
- <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; </div>
1664
- <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; }</div>
1665
- <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <span class="keywordflow">else</span></div>
1666
- <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; {</div>
1667
- <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; <span class="comment">// Simple type</span></div>
1668
- <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; numFields += 1;</div>
1669
- <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; strideOffset += 1;</div>
1670
- <div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfTy);</div>
1671
- <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfTy);</div>
1632
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01267">1267</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1633
+ <div class="fragment"><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;{</div>
1634
+ <div class="line"><a name="l01271"></a><span class="lineno"> 1271</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>
1635
+ <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; </div>
1636
+ <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div>
1637
+ <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; numFields = 0;</div>
1638
+ <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <span class="comment">// The offset when considering array stride info</span></div>
1639
+ <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div>
1640
+ <div class="line"><a name="l01277"></a><span class="lineno"> 1277</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>
1641
+ <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; {</div>
1642
+ <div class="line"><a name="l01279"></a><span class="lineno"> 1279</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>
1643
+ <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <span class="comment">// offset with int_32 (s32_t) is large enough and won&#39;t overflow</span></div>
1644
+ <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(numFields, elemSvfTy, strideOffset);</div>
1645
+ <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; </div>
1646
+ <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(elemTy))</div>
1647
+ <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; {</div>
1648
+ <div class="line"><a name="l01285"></a><span class="lineno"> 1285</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>
1649
+ <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
1650
+ <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
1651
+ <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="comment">// Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div>
1652
+ <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfF; ++j)</div>
1653
+ <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; {</div>
1654
+ <div class="line"><a name="l01291"></a><span class="lineno"> 1291</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>
1655
+ <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div>
1656
+ <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; }</div>
1657
+ <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; numFields += nfF;</div>
1658
+ <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; strideOffset += nfE;</div>
1659
+ <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj &lt; nfE; ++tpj)</div>
1660
+ <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; {</div>
1661
+ <div class="line"><a name="l01298"></a><span class="lineno"> 1298</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>
1662
+ <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(ty);</div>
1663
+ <div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; }</div>
1664
+ <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; </div>
1672
1665
  <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; }</div>
1673
- <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; }</div>
1674
- <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; </div>
1675
- <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &amp;&amp;</div>
1676
- <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; <span class="stringliteral">&quot;typeForStruct size incorrect!&quot;</span>);</div>
1677
- <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(numFields,strideOffset);</div>
1678
- <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; </div>
1679
- <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1680
- <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;}</div>
1666
+ <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <span class="keywordflow">else</span></div>
1667
+ <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; {</div>
1668
+ <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <span class="comment">// Simple type</span></div>
1669
+ <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; numFields += 1;</div>
1670
+ <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; strideOffset += 1;</div>
1671
+ <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfTy);</div>
1672
+ <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfTy);</div>
1673
+ <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; }</div>
1674
+ <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; }</div>
1675
+ <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; </div>
1676
+ <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; assert(stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &amp;&amp;</div>
1677
+ <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; <span class="stringliteral">&quot;typeForStruct size incorrect!&quot;</span>);</div>
1678
+ <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(numFields,strideOffset);</div>
1679
+ <div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; </div>
1680
+ <div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1681
+ <div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;}</div>
1681
1682
  </div><!-- fragment -->
1682
1683
  </div>
1683
1684
  </div>
@@ -1707,37 +1708,37 @@ Friends</h2></td></tr>
1707
1708
 
1708
1709
  <p>Collect a type info. </p>
1709
1710
 
1710
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01115">1115</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1711
- <div class="fragment"><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;{</div>
1712
- <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div>
1713
- <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="keywordflow">if</span> (tit != <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.end())</div>
1714
- <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; {</div>
1715
- <div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="keywordflow">return</span> tit-&gt;second;</div>
1716
- <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; }</div>
1717
- <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="comment">// No such StInfo for T, create it now.</span></div>
1718
- <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo;</div>
1719
- <div class="line"><a name="l01124"></a><span class="lineno"> 1124</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>
1720
- <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; {</div>
1721
- <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div>
1722
- <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; }</div>
1723
- <div class="line"><a name="l01128"></a><span class="lineno"> 1128</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>
1724
- <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; {</div>
1725
- <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf;</div>
1726
- <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">collectStructInfo</a>(sty, nf);</div>
1727
- <div class="line"><a name="l01132"></a><span class="lineno"> 1132</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>
1728
- <div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; {</div>
1729
- <div class="line"><a name="l01134"></a><span class="lineno"> 1134</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>
1730
- <div class="line"><a name="l01135"></a><span class="lineno"> 1135</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>
1731
- <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; }</div>
1732
- <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; }</div>
1733
- <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">else</span></div>
1734
- <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; {</div>
1735
- <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a>(T);</div>
1736
- <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; }</div>
1737
- <div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.emplace(T, stInfo);</div>
1738
- <div class="line"><a name="l01143"></a><span class="lineno"> 1143</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>
1739
- <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1740
- <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;}</div>
1711
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01123">1123</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1712
+ <div class="fragment"><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;{</div>
1713
+ <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div>
1714
+ <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <span class="keywordflow">if</span> (tit != <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.end())</div>
1715
+ <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; {</div>
1716
+ <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="keywordflow">return</span> tit-&gt;second;</div>
1717
+ <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; }</div>
1718
+ <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <span class="comment">// No such StInfo for T, create it now.</span></div>
1719
+ <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo;</div>
1720
+ <div class="line"><a name="l01132"></a><span class="lineno"> 1132</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>
1721
+ <div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; {</div>
1722
+ <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div>
1723
+ <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; }</div>
1724
+ <div class="line"><a name="l01136"></a><span class="lineno"> 1136</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>
1725
+ <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; {</div>
1726
+ <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf;</div>
1727
+ <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">collectStructInfo</a>(sty, nf);</div>
1728
+ <div class="line"><a name="l01140"></a><span class="lineno"> 1140</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>
1729
+ <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; {</div>
1730
+ <div class="line"><a name="l01142"></a><span class="lineno"> 1142</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>
1731
+ <div class="line"><a name="l01143"></a><span class="lineno"> 1143</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>
1732
+ <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; }</div>
1733
+ <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; }</div>
1734
+ <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keywordflow">else</span></div>
1735
+ <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; {</div>
1736
+ <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a>(T);</div>
1737
+ <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; }</div>
1738
+ <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.emplace(T, stInfo);</div>
1739
+ <div class="line"><a name="l01151"></a><span class="lineno"> 1151</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>
1740
+ <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <span class="keywordflow">return</span> stInfo;</div>
1741
+ <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;}</div>
1741
1742
  </div><!-- fragment -->
1742
1743
  </div>
1743
1744
  </div>
@@ -1773,69 +1774,76 @@ Friends</h2></td></tr>
1773
1774
  <p>GlobalAlias</p>
1774
1775
  <p>GlobalIFunc</p>
1775
1776
 
1776
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00165">165</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1777
- <div class="fragment"><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;{</div>
1778
- <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(IntegerType::getInt8Ty(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>()));</div>
1779
- <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> candidateDecls;</div>
1780
- <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> candidateDefs;</div>
1781
- <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
1782
- <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div>
1783
- <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; func : mod.functions())</div>
1784
- <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div>
1785
- <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (func.isDeclaration())</div>
1786
- <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div>
1787
- <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; candidateDecls.insert(&amp;func);</div>
1788
- <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div>
1789
- <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">else</span></div>
1790
- <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; {</div>
1791
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span> (mod.getName().str() == <a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>() &amp;&amp; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[&amp;func].empty())</div>
1792
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div>
1793
- <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">continue</span>;</div>
1794
- <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
1795
- <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">else</span></div>
1796
- <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div>
1797
- <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; candidateDecls.insert(&amp;func);</div>
1798
- <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div>
1799
- <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div>
1800
- <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div>
1801
- <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div>
1802
- <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func: candidateDefs)</div>
1803
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; {</div>
1804
- <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">createSVFFunction</a>(func);</div>
1805
- <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div>
1806
- <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; </div>
1807
- <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func: candidateDecls)</div>
1808
- <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; {</div>
1809
- <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">createSVFFunction</a>(func);</div>
1810
- <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div>
1811
- <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; </div>
1812
- <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
1813
- <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div>
1814
- <div class="line"><a name="l00211"></a><span class="lineno"> 211</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>
1815
- <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; {</div>
1816
- <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfglobal = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
1817
- <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; global.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(global.getType()));</div>
1818
- <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a0bc5a63d8c10da51766007cf40b095e5">addGlobalSet</a>(svfglobal);</div>
1819
- <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&amp;global, svfglobal);</div>
1820
- <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div>
1821
- <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
1822
- <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">GlobalAlias</a>&amp; alias : mod.aliases())</div>
1823
- <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div>
1824
- <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfalias = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
1825
- <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; alias.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(alias.getType()));</div>
1826
- <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa6627399cf4d30d576f76f681d83449d">addAliasSet</a>(svfalias);</div>
1827
- <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&amp;alias, svfalias);</div>
1828
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div>
1829
- <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; </div>
1830
- <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aacffd97ab4cb45aeae2e67ec479889aa">GlobalIFunc</a>&amp; ifunc : mod.ifuncs())</div>
1831
- <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div>
1832
- <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfifunc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
1833
- <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; ifunc.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ifunc.getType()));</div>
1834
- <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa6627399cf4d30d576f76f681d83449d">addAliasSet</a>(svfifunc);</div>
1835
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&amp;ifunc, svfifunc);</div>
1836
- <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div>
1837
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div>
1838
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;}</div>
1777
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00166">166</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1778
+ <div class="fragment"><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;{</div>
1779
+ <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(IntegerType::getInt8Ty(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>()));</div>
1780
+ <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> candidateDecls;</div>
1781
+ <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> candidateDefs;</div>
1782
+ <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; </div>
1783
+ <div class="line"><a name="l00172"></a><span class="lineno"> 172</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>
1784
+ <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div>
1785
+ <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; std::vector&lt;Function*&gt; removedFuncList;</div>
1786
+ <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&amp; func : mod.functions())</div>
1787
+ <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; {</div>
1788
+ <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span> (func.isDeclaration())</div>
1789
+ <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div>
1790
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; candidateDecls.insert(&amp;func);</div>
1791
+ <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div>
1792
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">else</span></div>
1793
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div>
1794
+ <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span> (mod.getName().str() == <a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>() &amp;&amp; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[&amp;func].empty() &amp;&amp; func.getName().str() != <span class="stringliteral">&quot;svf__main&quot;</span>)</div>
1795
+ <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div>
1796
+ <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; removedFuncList.push_back(&amp;func);</div>
1797
+ <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">continue</span>;</div>
1798
+ <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div>
1799
+ <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">else</span></div>
1800
+ <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div>
1801
+ <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; candidateDefs.insert(&amp;func);</div>
1802
+ <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div>
1803
+ <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div>
1804
+ <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div>
1805
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : removedFuncList)</div>
1806
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; {</div>
1807
+ <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; mod.getFunctionList().remove(func);</div>
1808
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div>
1809
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div>
1810
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func: candidateDefs)</div>
1811
+ <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; {</div>
1812
+ <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">createSVFFunction</a>(func);</div>
1813
+ <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div>
1814
+ <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; </div>
1815
+ <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func: candidateDecls)</div>
1816
+ <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div>
1817
+ <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">createSVFFunction</a>(func);</div>
1818
+ <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div>
1819
+ <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; </div>
1820
+ <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
1821
+ <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; {</div>
1822
+ <div class="line"><a name="l00219"></a><span class="lineno"> 219</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>
1823
+ <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div>
1824
+ <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfglobal = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
1825
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; global.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(global.getType()));</div>
1826
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a0bc5a63d8c10da51766007cf40b095e5">addGlobalSet</a>(svfglobal);</div>
1827
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&amp;global, svfglobal);</div>
1828
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div>
1829
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; </div>
1830
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">GlobalAlias</a>&amp; alias : mod.aliases())</div>
1831
+ <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div>
1832
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfalias = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
1833
+ <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; alias.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(alias.getType()));</div>
1834
+ <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#aa6627399cf4d30d576f76f681d83449d">addAliasSet</a>(svfalias);</div>
1835
+ <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&amp;alias, svfalias);</div>
1836
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div>
1837
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; </div>
1838
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aacffd97ab4cb45aeae2e67ec479889aa">GlobalIFunc</a>&amp; ifunc : mod.ifuncs())</div>
1839
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div>
1840
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfifunc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(</div>
1841
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; ifunc.getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ifunc.getType()));</div>
1842
+ <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#aa6627399cf4d30d576f76f681d83449d">addAliasSet</a>(svfifunc);</div>
1843
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(&amp;ifunc, svfifunc);</div>
1844
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div>
1845
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
1846
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;}</div>
1839
1847
  </div><!-- fragment -->
1840
1848
  </div>
1841
1849
  </div>
@@ -1863,84 +1871,84 @@ Friends</h2></td></tr>
1863
1871
  </table>
1864
1872
  </div><div class="memdoc">
1865
1873
 
1866
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00239">239</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1867
- <div class="fragment"><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;{</div>
1868
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFunc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>(</div>
1869
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func-&gt;getType()),</div>
1870
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; SVFUtil::cast&lt;SVFFunctionType&gt;(</div>
1871
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func-&gt;getFunctionType())),</div>
1872
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; func-&gt;isDeclaration(), <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">LLVMUtil::isIntrinsicFun</a>(func),</div>
1873
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; func-&gt;hasAddressTaken(), func-&gt;isVarArg(), <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>);</div>
1874
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(func-&gt;getName().str());</div>
1875
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</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>
1876
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab671d5bb9ca5761e2b438a4d4da229cf">addFunctionMap</a>(func, svfFunc);</div>
1877
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; </div>
1878
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</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>
1879
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div>
1880
- <div class="line"><a name="l00253"></a><span class="lineno"> 253</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>
1881
- <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(arg.getType()), svfFunc, arg.getArgNo(),</div>
1882
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">LLVMUtil::isArgOfUncalledFunction</a>(&amp;arg));</div>
1883
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// Setting up arg name</span></div>
1884
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">if</span> (arg.hasName())</div>
1885
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; svfarg-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(arg.getName().str());</div>
1886
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">else</span></div>
1887
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; svfarg-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(std::to_string(arg.getArgNo()));</div>
1888
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; </div>
1889
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ad865b8440a6e0d5d212798d2213e1e9c">addArgument</a>(svfarg);</div>
1890
- <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5595ec3f7582934dc499770825bf5373">addArgumentMap</a>(&amp;arg, svfarg);</div>
1891
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div>
1892
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; </div>
1893
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</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>
1894
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; {</div>
1895
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB =</div>
1896
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</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>
1897
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span> (bb.hasName())</div>
1898
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; svfBB-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(bb.getName().str());</div>
1899
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">addBasicBlock</a>(svfBB);</div>
1900
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">addBasicBlockMap</a>(&amp;bb, svfBB);</div>
1901
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</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>
1902
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div>
1903
- <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <span class="keyword">nullptr</span>;</div>
1904
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</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>
1905
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div>
1906
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">LLVMUtil::isVirtualCallSite</a>(call))</div>
1907
- <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_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>(</div>
1908
- <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>
1909
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; call-&gt;getFunctionType()-&gt;isVarArg(),</div>
1910
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; inst.isTerminator());</div>
1911
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">else</span></div>
1912
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>(</div>
1913
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call-&gt;getType()), svfBB,</div>
1914
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; call-&gt;getFunctionType()-&gt;isVarArg(),</div>
1915
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; inst.isTerminator());</div>
1916
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div>
1917
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">else</span></div>
1918
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div>
1919
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; svfInst =</div>
1920
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</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>
1921
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; svfBB, inst.isTerminator(),</div>
1922
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; SVFUtil::isa&lt;ReturnInst&gt;(inst));</div>
1923
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div>
1924
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; </div>
1925
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="comment">// Set instruction&#39;s string representation</span></div>
1926
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (inst.hasName() &amp;&amp; !inst.getName().empty())</div>
1927
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div>
1928
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; svfInst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(inst.getName().str());</div>
1929
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; }</div>
1930
- <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">else</span></div>
1931
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {</div>
1932
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a7b8b93fec1dc8c63c0a5837a85b99129">LLVMUtil::llvmToString</a>(inst);</div>
1933
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keyword">auto</span> it = str.begin(), ite = str.end();</div>
1934
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">while</span> (it != ite &amp;&amp; std::isspace(*it))</div>
1935
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; ++it;</div>
1936
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="comment">// 0xf (15) is the max length a local string can hold</span></div>
1937
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; svfInst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>({it, std::min(it + 0xf, ite)});</div>
1938
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div>
1939
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; svfBB-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">addInstruction</a>(svfInst);</div>
1940
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">addInstructionMap</a>(&amp;inst, svfInst);</div>
1941
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div>
1942
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div>
1943
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;}</div>
1874
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00247">247</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1875
+ <div class="fragment"><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;{</div>
1876
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFunc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>(</div>
1877
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func-&gt;getType()),</div>
1878
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; SVFUtil::cast&lt;SVFFunctionType&gt;(</div>
1879
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func-&gt;getFunctionType())),</div>
1880
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; func-&gt;isDeclaration(), <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">LLVMUtil::isIntrinsicFun</a>(func),</div>
1881
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; func-&gt;hasAddressTaken(), func-&gt;isVarArg(), <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>);</div>
1882
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(func-&gt;getName().str());</div>
1883
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</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>
1884
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab671d5bb9ca5761e2b438a4d4da229cf">addFunctionMap</a>(func, svfFunc);</div>
1885
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; </div>
1886
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</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>
1887
+ <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; {</div>
1888
+ <div class="line"><a name="l00261"></a><span class="lineno"> 261</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>
1889
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(arg.getType()), svfFunc, arg.getArgNo(),</div>
1890
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">LLVMUtil::isArgOfUncalledFunction</a>(&amp;arg));</div>
1891
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// Setting up arg name</span></div>
1892
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span> (arg.hasName())</div>
1893
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; svfarg-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(arg.getName().str());</div>
1894
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">else</span></div>
1895
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; svfarg-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(std::to_string(arg.getArgNo()));</div>
1896
+ <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; </div>
1897
+ <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ad865b8440a6e0d5d212798d2213e1e9c">addArgument</a>(svfarg);</div>
1898
+ <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5595ec3f7582934dc499770825bf5373">addArgumentMap</a>(&amp;arg, svfarg);</div>
1899
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div>
1900
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; </div>
1901
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</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>
1902
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div>
1903
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB =</div>
1904
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</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>
1905
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">if</span> (bb.hasName())</div>
1906
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; svfBB-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(bb.getName().str());</div>
1907
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; svfFunc-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">addBasicBlock</a>(svfBB);</div>
1908
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">addBasicBlockMap</a>(&amp;bb, svfBB);</div>
1909
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</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>
1910
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div>
1911
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <span class="keyword">nullptr</span>;</div>
1912
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</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>
1913
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div>
1914
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">LLVMUtil::isVirtualCallSite</a>(call))</div>
1915
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>(</div>
1916
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call-&gt;getType()), svfBB,</div>
1917
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; call-&gt;getFunctionType()-&gt;isVarArg(),</div>
1918
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; inst.isTerminator());</div>
1919
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">else</span></div>
1920
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>(</div>
1921
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call-&gt;getType()), svfBB,</div>
1922
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; call-&gt;getFunctionType()-&gt;isVarArg(),</div>
1923
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; inst.isTerminator());</div>
1924
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div>
1925
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">else</span></div>
1926
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div>
1927
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; svfInst =</div>
1928
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</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>
1929
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; svfBB, inst.isTerminator(),</div>
1930
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; SVFUtil::isa&lt;ReturnInst&gt;(inst));</div>
1931
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div>
1932
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; </div>
1933
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="comment">// Set instruction&#39;s string representation</span></div>
1934
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (inst.hasName() &amp;&amp; !inst.getName().empty())</div>
1935
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div>
1936
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; svfInst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(inst.getName().str());</div>
1937
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div>
1938
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">else</span></div>
1939
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div>
1940
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a7b8b93fec1dc8c63c0a5837a85b99129">LLVMUtil::llvmToString</a>(inst);</div>
1941
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keyword">auto</span> it = str.begin(), ite = str.end();</div>
1942
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">while</span> (it != ite &amp;&amp; std::isspace(*it))</div>
1943
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; ++it;</div>
1944
+ <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="comment">// 0xf (15) is the max length a local string can hold</span></div>
1945
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; svfInst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>({it, std::min(it + 0xf, ite)});</div>
1946
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div>
1947
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; svfBB-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">addInstruction</a>(svfInst);</div>
1948
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">addInstructionMap</a>(&amp;inst, svfInst);</div>
1949
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div>
1950
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div>
1951
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div>
1944
1952
  </div><!-- fragment -->
1945
1953
  </div>
1946
1954
  </div>
@@ -1960,30 +1968,30 @@ Friends</h2></td></tr>
1960
1968
  </table>
1961
1969
  </div><div class="memdoc">
1962
1970
 
1963
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00894">894</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1964
- <div class="fragment"><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160;{</div>
1965
- <div class="line"><a name="l00896"></a><span class="lineno"> 896</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>
1966
- <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; {</div>
1967
- <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> moduleName = mod.getName().str();</div>
1968
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> OutputFilename;</div>
1969
- <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; std::size_t pos = moduleName.rfind(<span class="charliteral">&#39;.&#39;</span>);</div>
1970
- <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">if</span> (pos != std::string::npos)</div>
1971
- <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; OutputFilename = moduleName.substr(0, pos) + suffix;</div>
1972
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">else</span></div>
1973
- <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; OutputFilename = moduleName + suffix;</div>
1974
- <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; </div>
1975
- <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; std::error_code EC;</div>
1976
- <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <a class="code" href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">raw_fd_ostream</a> OS(OutputFilename.c_str(), EC, llvm::sys::fs::OF_None);</div>
1977
- <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; </div>
1978
- <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 7)</span></div>
1979
- <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; WriteBitcodeToFile(mod, OS);</div>
1980
- <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160;<span class="preprocessor">#else</span></div>
1981
- <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; WriteBitcodeToFile(&amp;mod, OS);</div>
1982
- <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;<span class="preprocessor">#endif</span></div>
1983
- <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; </div>
1984
- <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; OS.flush();</div>
1985
- <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; }</div>
1986
- <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;}</div>
1971
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00902">902</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1972
+ <div class="fragment"><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;{</div>
1973
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</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>
1974
+ <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; {</div>
1975
+ <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> moduleName = mod.getName().str();</div>
1976
+ <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> OutputFilename;</div>
1977
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; std::size_t pos = moduleName.rfind(<span class="charliteral">&#39;.&#39;</span>);</div>
1978
+ <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">if</span> (pos != std::string::npos)</div>
1979
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; OutputFilename = moduleName.substr(0, pos) + suffix;</div>
1980
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">else</span></div>
1981
+ <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; OutputFilename = moduleName + suffix;</div>
1982
+ <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; </div>
1983
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; std::error_code EC;</div>
1984
+ <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <a class="code" href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">raw_fd_ostream</a> OS(OutputFilename.c_str(), EC, llvm::sys::fs::OF_None);</div>
1985
+ <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; </div>
1986
+ <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;<span class="preprocessor">#if (LLVM_VERSION_MAJOR &gt;= 7)</span></div>
1987
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; WriteBitcodeToFile(mod, OS);</div>
1988
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;<span class="preprocessor">#else</span></div>
1989
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; WriteBitcodeToFile(&amp;mod, OS);</div>
1990
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160;<span class="preprocessor">#endif</span></div>
1991
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; </div>
1992
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; OS.flush();</div>
1993
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; }</div>
1994
+ <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;}</div>
1987
1995
  </div><!-- fragment -->
1988
1996
  </div>
1989
1997
  </div>
@@ -2176,94 +2184,94 @@ Friends</h2></td></tr>
2176
2184
  </table>
2177
2185
  </div><div class="memdoc">
2178
2186
 
2179
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00580">580</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2180
- <div class="fragment"><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;{</div>
2181
- <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="comment">// This function is used to extract constructor and destructor functions</span></div>
2182
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="comment">// sorted by their priority from @llvm.global_ctors or @llvm.global_dtors.</span></div>
2183
- <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="comment">// For example, given following @llvm.global_ctors, the returning sorted</span></div>
2184
- <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="comment">// function list should be [ctor3, ctor1, ctor2].</span></div>
2185
- <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2186
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="comment">// ; Each struct in the array is {priority, function, associated data}</span></div>
2187
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="comment">//</span></div>
2188
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="comment">// @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }]</span></div>
2189
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="comment">// [{ i32, void ()*, i8* } { i32 1234, void ()* @ctor1.cpp, i8* null },</span></div>
2190
- <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 2345, void ()* @ctor2.cpp, i8* null },</span></div>
2191
- <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 345, void ()* @ctor3.cpp, i8* null }]</span></div>
2192
- <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2193
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="comment">// TODO: According to LLVM language reference, if the third field is</span></div>
2194
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="comment">// non-null, and points to a global variable or function, the initializer</span></div>
2195
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="comment">// function will only run if the associated data from the current module is</span></div>
2196
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="comment">// not discarded. However the associated data is currently ignored.</span></div>
2197
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; </div>
2198
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; </div>
2199
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="comment">// This class is used for the priority queue that sorts the functions by</span></div>
2200
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="comment">// their priority. Each object of this class stands for an item in the</span></div>
2201
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="comment">// function array.</span></div>
2202
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keyword">class </span>LLVMGlobalFunction</div>
2203
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; {</div>
2204
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keyword">public</span>:</div>
2205
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> priority;</div>
2206
- <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func;</div>
2207
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; LLVMGlobalFunction() {};</div>
2208
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; LLVMGlobalFunction(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> _priority, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* _func)</div>
2209
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; : priority(_priority), func(_func) {};</div>
2210
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</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>
2211
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="keyword"> </span>{</div>
2212
- <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">if</span> (priority != other.priority)</div>
2213
- <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div>
2214
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">return</span> priority &gt; other.priority;</div>
2215
- <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; }</div>
2216
- <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">else</span></div>
2217
- <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; {</div>
2218
- <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">return</span> func &gt; other.func;</div>
2219
- <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div>
2220
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }</div>
2221
- <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; };</div>
2222
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; </div>
2223
- <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; std::priority_queue&lt;LLVMGlobalFunction, std::vector&lt;LLVMGlobalFunction&gt;,</div>
2224
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; greater&lt;LLVMGlobalFunction&gt;&gt;</div>
2225
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; queue;</div>
2226
- <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; std::vector&lt;const Function* &gt; result;</div>
2227
- <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; </div>
2228
- <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="comment">// The @llvm.global_ctors/dtors global variable is an array of struct. Each</span></div>
2229
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="comment">// struct has three fields: {i32 priority, void ()* @ctor/dtor, i8* @data}.</span></div>
2230
- <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="comment">// First get the array here.</span></div>
2231
- <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *globalFuncArray =</div>
2232
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; SVFUtil::dyn_cast&lt;ConstantArray&gt;(global-&gt;getInitializer()))</div>
2233
- <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; {</div>
2234
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="comment">// Get each struct in the array.</span></div>
2235
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</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>
2236
- <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; {</div>
2237
- <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">if</span> (</div>
2238
- <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *globalFuncItem =</div>
2239
- <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; SVFUtil::dyn_cast&lt;ConstantStruct&gt;(</div>
2240
- <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; globalFuncArray-&gt;getOperand(i)))</div>
2241
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; {</div>
2242
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; </div>
2243
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="comment">// Extract priority and function from the struct</span></div>
2244
- <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* priority = SVFUtil::dyn_cast&lt;ConstantInt&gt;(</div>
2245
- <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; globalFuncItem-&gt;getOperand(0));</div>
2246
- <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(</div>
2247
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; globalFuncItem-&gt;getOperand(1));</div>
2248
- <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; </div>
2249
- <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">if</span> (priority &amp;&amp; func)</div>
2250
- <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; {</div>
2251
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; queue.push(LLVMGlobalFunction(priority</div>
2252
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; -&gt;getZExtValue(),</div>
2253
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; func));</div>
2254
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; }</div>
2255
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; }</div>
2256
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div>
2257
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div>
2258
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; </div>
2259
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="comment">// Generate a sorted vector of functions from the priority queue.</span></div>
2260
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">while</span> (!queue.empty())</div>
2261
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; {</div>
2262
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; result.push_back(queue.top().func);</div>
2263
- <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; queue.pop();</div>
2264
- <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; }</div>
2265
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">return</span> result;</div>
2266
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;}</div>
2187
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00588">588</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2188
+ <div class="fragment"><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;{</div>
2189
+ <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="comment">// This function is used to extract constructor and destructor functions</span></div>
2190
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="comment">// sorted by their priority from @llvm.global_ctors or @llvm.global_dtors.</span></div>
2191
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="comment">// For example, given following @llvm.global_ctors, the returning sorted</span></div>
2192
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="comment">// function list should be [ctor3, ctor1, ctor2].</span></div>
2193
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2194
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="comment">// ; Each struct in the array is {priority, function, associated data}</span></div>
2195
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="comment">//</span></div>
2196
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="comment">// @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }]</span></div>
2197
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="comment">// [{ i32, void ()*, i8* } { i32 1234, void ()* @ctor1.cpp, i8* null },</span></div>
2198
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 2345, void ()* @ctor2.cpp, i8* null },</span></div>
2199
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 345, void ()* @ctor3.cpp, i8* null }]</span></div>
2200
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
2201
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="comment">// TODO: According to LLVM language reference, if the third field is</span></div>
2202
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="comment">// non-null, and points to a global variable or function, the initializer</span></div>
2203
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="comment">// function will only run if the associated data from the current module is</span></div>
2204
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="comment">// not discarded. However the associated data is currently ignored.</span></div>
2205
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; </div>
2206
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; </div>
2207
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="comment">// This class is used for the priority queue that sorts the functions by</span></div>
2208
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="comment">// their priority. Each object of this class stands for an item in the</span></div>
2209
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="comment">// function array.</span></div>
2210
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keyword">class </span>LLVMGlobalFunction</div>
2211
+ <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; {</div>
2212
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keyword">public</span>:</div>
2213
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> priority;</div>
2214
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func;</div>
2215
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; LLVMGlobalFunction() {};</div>
2216
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; LLVMGlobalFunction(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> _priority, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* _func)</div>
2217
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; : priority(_priority), func(_func) {};</div>
2218
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</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>
2219
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;<span class="keyword"> </span>{</div>
2220
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span> (priority != other.priority)</div>
2221
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; {</div>
2222
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">return</span> priority &gt; other.priority;</div>
2223
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div>
2224
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">else</span></div>
2225
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; {</div>
2226
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">return</span> func &gt; other.func;</div>
2227
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</div>
2228
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; }</div>
2229
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; };</div>
2230
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; </div>
2231
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; std::priority_queue&lt;LLVMGlobalFunction, std::vector&lt;LLVMGlobalFunction&gt;,</div>
2232
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; greater&lt;LLVMGlobalFunction&gt;&gt;</div>
2233
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; queue;</div>
2234
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; std::vector&lt;const Function* &gt; result;</div>
2235
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; </div>
2236
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="comment">// The @llvm.global_ctors/dtors global variable is an array of struct. Each</span></div>
2237
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="comment">// struct has three fields: {i32 priority, void ()* @ctor/dtor, i8* @data}.</span></div>
2238
+ <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="comment">// First get the array here.</span></div>
2239
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *globalFuncArray =</div>
2240
+ <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; SVFUtil::dyn_cast&lt;ConstantArray&gt;(global-&gt;getInitializer()))</div>
2241
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; {</div>
2242
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="comment">// Get each struct in the array.</span></div>
2243
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</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>
2244
+ <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; {</div>
2245
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">if</span> (</div>
2246
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *globalFuncItem =</div>
2247
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; SVFUtil::dyn_cast&lt;ConstantStruct&gt;(</div>
2248
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; globalFuncArray-&gt;getOperand(i)))</div>
2249
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; {</div>
2250
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; </div>
2251
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="comment">// Extract priority and function from the struct</span></div>
2252
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* priority = SVFUtil::dyn_cast&lt;ConstantInt&gt;(</div>
2253
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; globalFuncItem-&gt;getOperand(0));</div>
2254
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(</div>
2255
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; globalFuncItem-&gt;getOperand(1));</div>
2256
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; </div>
2257
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">if</span> (priority &amp;&amp; func)</div>
2258
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; {</div>
2259
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; queue.push(LLVMGlobalFunction(priority</div>
2260
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; -&gt;getZExtValue(),</div>
2261
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; func));</div>
2262
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; }</div>
2263
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div>
2264
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; }</div>
2265
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div>
2266
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; </div>
2267
+ <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="comment">// Generate a sorted vector of functions from the priority queue.</span></div>
2268
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">while</span> (!queue.empty())</div>
2269
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; {</div>
2270
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; result.push_back(queue.top().func);</div>
2271
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; queue.pop();</div>
2272
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div>
2273
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">return</span> result;</div>
2274
+ <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;}</div>
2267
2275
  </div><!-- fragment -->
2268
2276
  </div>
2269
2277
  </div>
@@ -2347,16 +2355,16 @@ Friends</h2></td></tr>
2347
2355
 
2348
2356
  <p>Get LLVM Type. </p>
2349
2357
 
2350
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01081">1081</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2351
- <div class="fragment"><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;{</div>
2352
- <div class="line"><a name="l01083"></a><span class="lineno"> 1083</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>
2353
- <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; {</div>
2354
- <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keywordflow">if</span> (it-&gt;second == T)</div>
2355
- <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keywordflow">return</span> it-&gt;first;</div>
2356
- <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; }</div>
2357
- <div class="line"><a name="l01088"></a><span class="lineno"> 1088</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>
2358
- <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; abort();</div>
2359
- <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;}</div>
2358
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01089">1089</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2359
+ <div class="fragment"><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;{</div>
2360
+ <div class="line"><a name="l01091"></a><span class="lineno"> 1091</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>
2361
+ <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; {</div>
2362
+ <div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordflow">if</span> (it-&gt;second == T)</div>
2363
+ <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordflow">return</span> it-&gt;first;</div>
2364
+ <div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; }</div>
2365
+ <div class="line"><a name="l01096"></a><span class="lineno"> 1096</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>
2366
+ <div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; abort();</div>
2367
+ <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;}</div>
2360
2368
  </div><!-- fragment -->
2361
2369
  </div>
2362
2370
  </div>
@@ -2532,44 +2540,44 @@ Friends</h2></td></tr>
2532
2540
  </table>
2533
2541
  </div><div class="memdoc">
2534
2542
 
2535
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00992">992</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2536
- <div class="fragment"><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;{</div>
2537
- <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div>
2538
- <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
2539
- <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; {</div>
2540
- <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2541
- <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; }</div>
2542
- <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">else</span></div>
2543
- <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; {</div>
2544
- <div class="line"><a name="l01001"></a><span class="lineno"> 1001</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>
2545
- <div class="line"><a name="l01002"></a><span class="lineno"> 1002</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>
2546
- <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div>
2547
- <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; </div>
2548
- <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="comment">// Setting up string representation.</span></div>
2549
- <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="comment">// Usually is a bitcast from a global variable&#39;s address</span></div>
2550
- <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a7b8b93fec1dc8c63c0a5837a85b99129">LLVMUtil::llvmToString</a>(*oc);</div>
2551
- <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* spaceChars = <span class="stringliteral">&quot; \t\n\v\f\r&quot;</span>;</div>
2552
- <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordtype">size_t</span> space = str.find_first_of(spaceChars);</div>
2553
- <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> maxLen = 62; <span class="comment">// Arbitrary chosen small number that fits string</span></div>
2554
- <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <span class="comment">// within one line</span></div>
2555
- <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <span class="keywordflow">if</span> (space != str.npos &amp;&amp;</div>
2556
- <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; (space = str.find_first_of(spaceChars, space + 1)) != str.npos)</div>
2557
- <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; {</div>
2558
- <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> = str.find(<span class="charliteral">&#39;@&#39;</span>, space);</div>
2559
- <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; str.erase(space, <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> - space);</div>
2560
- <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; }</div>
2561
- <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (str.size() &gt; maxLen)</div>
2562
- <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; {</div>
2563
- <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordtype">int</span> extra = str.size() - maxLen;</div>
2564
- <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="keywordtype">int</span> half = maxLen / 2;</div>
2565
- <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; str[half++] = <span class="charliteral">&#39;~&#39;</span>;</div>
2566
- <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; str.erase(half, half + extra);</div>
2567
- <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; }</div>
2568
- <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; svfoc-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(str));</div>
2569
- <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; </div>
2570
- <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <span class="keywordflow">return</span> svfoc;</div>
2571
- <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; }</div>
2572
- <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;}</div>
2543
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01000">1000</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2544
+ <div class="fragment"><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;{</div>
2545
+ <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div>
2546
+ <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
2547
+ <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; {</div>
2548
+ <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2549
+ <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; }</div>
2550
+ <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keywordflow">else</span></div>
2551
+ <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; {</div>
2552
+ <div class="line"><a name="l01009"></a><span class="lineno"> 1009</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>
2553
+ <div class="line"><a name="l01010"></a><span class="lineno"> 1010</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>
2554
+ <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div>
2555
+ <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; </div>
2556
+ <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="comment">// Setting up string representation.</span></div>
2557
+ <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="comment">// Usually is a bitcast from a global variable&#39;s address</span></div>
2558
+ <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a7b8b93fec1dc8c63c0a5837a85b99129">LLVMUtil::llvmToString</a>(*oc);</div>
2559
+ <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* spaceChars = <span class="stringliteral">&quot; \t\n\v\f\r&quot;</span>;</div>
2560
+ <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordtype">size_t</span> space = str.find_first_of(spaceChars);</div>
2561
+ <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> maxLen = 62; <span class="comment">// Arbitrary chosen small number that fits string</span></div>
2562
+ <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="comment">// within one line</span></div>
2563
+ <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordflow">if</span> (space != str.npos &amp;&amp;</div>
2564
+ <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; (space = str.find_first_of(spaceChars, space + 1)) != str.npos)</div>
2565
+ <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; {</div>
2566
+ <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> = str.find(<span class="charliteral">&#39;@&#39;</span>, space);</div>
2567
+ <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; str.erase(space, <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> - space);</div>
2568
+ <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; }</div>
2569
+ <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (str.size() &gt; maxLen)</div>
2570
+ <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; {</div>
2571
+ <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <span class="keywordtype">int</span> extra = str.size() - maxLen;</div>
2572
+ <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <span class="keywordtype">int</span> half = maxLen / 2;</div>
2573
+ <div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; str[half++] = <span class="charliteral">&#39;~&#39;</span>;</div>
2574
+ <div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; str.erase(half, half + extra);</div>
2575
+ <div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; }</div>
2576
+ <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; svfoc-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(str));</div>
2577
+ <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; </div>
2578
+ <div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <span class="keywordflow">return</span> svfoc;</div>
2579
+ <div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; }</div>
2580
+ <div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;}</div>
2573
2581
  </div><!-- fragment -->
2574
2582
  </div>
2575
2583
  </div>
@@ -2656,49 +2664,49 @@ Friends</h2></td></tr>
2656
2664
  </div><div class="memdoc">
2657
2665
  <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>
2658
2666
 
2659
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00945">945</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2660
- <div class="fragment"><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;{</div>
2661
- <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(cd);</div>
2662
- <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
2663
- <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; {</div>
2664
- <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; assert(SVFUtil::isa&lt;SVFConstantData&gt;(it-&gt;second) &amp;&amp; <span class="stringliteral">&quot;not a SVFConstantData type!&quot;</span>);</div>
2665
- <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;SVFConstantData&gt;(it-&gt;second);</div>
2666
- <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; }</div>
2667
- <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">else</span></div>
2668
- <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; {</div>
2669
- <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>* svfcd = <span class="keyword">nullptr</span>;</div>
2670
- <div class="line"><a name="l00956"></a><span class="lineno"> 956</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>
2671
- <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; {</div>
2672
- <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keywordflow">if</span>(cint-&gt;getBitWidth() == 1)</div>
2673
- <div class="line"><a name="l00962"></a><span class="lineno"> 962</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>
2674
- <div class="line"><a name="l00963"></a><span class="lineno"> 963</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>
2675
- <div class="line"><a name="l00964"></a><span class="lineno"> 964</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>
2676
- <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">else</span></div>
2677
- <div class="line"><a name="l00966"></a><span class="lineno"> 966</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>
2678
- <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; }</div>
2679
- <div class="line"><a name="l00968"></a><span class="lineno"> 968</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>
2680
- <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; {</div>
2681
- <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordtype">double</span> dval = 0;</div>
2682
- <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="comment">// TODO: Why only double is considered? What about float?</span></div>
2683
- <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keywordflow">if</span>(cfp-&gt;isNormalFP() &amp;&amp; (&amp;cfp-&gt;getValueAPF().getSemantics()== &amp;llvm::APFloatBase::IEEEdouble()))</div>
2684
- <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; dval = cfp-&gt;getValueAPF().convertToDouble();</div>
2685
- <div class="line"><a name="l00974"></a><span class="lineno"> 974</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>
2667
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00953">953</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2668
+ <div class="fragment"><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;{</div>
2669
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(cd);</div>
2670
+ <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
2671
+ <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; {</div>
2672
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; assert(SVFUtil::isa&lt;SVFConstantData&gt;(it-&gt;second) &amp;&amp; <span class="stringliteral">&quot;not a SVFConstantData type!&quot;</span>);</div>
2673
+ <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;SVFConstantData&gt;(it-&gt;second);</div>
2674
+ <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; }</div>
2675
+ <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keywordflow">else</span></div>
2676
+ <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; {</div>
2677
+ <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>* svfcd = <span class="keyword">nullptr</span>;</div>
2678
+ <div class="line"><a name="l00964"></a><span class="lineno"> 964</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>
2679
+ <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; {</div>
2680
+ <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">if</span>(cint-&gt;getBitWidth() == 1)</div>
2681
+ <div class="line"><a name="l00970"></a><span class="lineno"> 970</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>
2682
+ <div class="line"><a name="l00971"></a><span class="lineno"> 971</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>
2683
+ <div class="line"><a name="l00972"></a><span class="lineno"> 972</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>
2684
+ <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keywordflow">else</span></div>
2685
+ <div class="line"><a name="l00974"></a><span class="lineno"> 974</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>
2686
2686
  <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; }</div>
2687
- <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantPointerNull&gt;(cd))</div>
2688
- <div class="line"><a name="l00977"></a><span class="lineno"> 977</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>
2689
- <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UndefValue&gt;(cd))</div>
2690
- <div class="line"><a name="l00979"></a><span class="lineno"> 979</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>
2691
- <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">else</span></div>
2692
- <div class="line"><a name="l00981"></a><span class="lineno"> 981</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>
2693
- <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; </div>
2694
- <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">if</span> (cd-&gt;hasName())</div>
2695
- <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; svfcd-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(cd-&gt;getName().str());</div>
2696
- <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; </div>
2697
- <div class="line"><a name="l00986"></a><span class="lineno"> 986</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>
2698
- <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div>
2699
- <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordflow">return</span> svfcd;</div>
2700
- <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; }</div>
2701
- <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;}</div>
2687
+ <div class="line"><a name="l00976"></a><span class="lineno"> 976</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>
2688
+ <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; {</div>
2689
+ <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordtype">double</span> dval = 0;</div>
2690
+ <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="comment">// TODO: Why only double is considered? What about float?</span></div>
2691
+ <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">if</span>(cfp-&gt;isNormalFP() &amp;&amp; (&amp;cfp-&gt;getValueAPF().getSemantics()== &amp;llvm::APFloatBase::IEEEdouble()))</div>
2692
+ <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; dval = cfp-&gt;getValueAPF().convertToDouble();</div>
2693
+ <div class="line"><a name="l00982"></a><span class="lineno"> 982</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>
2694
+ <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; }</div>
2695
+ <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;ConstantPointerNull&gt;(cd))</div>
2696
+ <div class="line"><a name="l00985"></a><span class="lineno"> 985</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>
2697
+ <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UndefValue&gt;(cd))</div>
2698
+ <div class="line"><a name="l00987"></a><span class="lineno"> 987</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>
2699
+ <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordflow">else</span></div>
2700
+ <div class="line"><a name="l00989"></a><span class="lineno"> 989</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>
2701
+ <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; </div>
2702
+ <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="keywordflow">if</span> (cd-&gt;hasName())</div>
2703
+ <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; svfcd-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(cd-&gt;getName().str());</div>
2704
+ <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; </div>
2705
+ <div class="line"><a name="l00994"></a><span class="lineno"> 994</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>
2706
+ <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div>
2707
+ <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="keywordflow">return</span> svfcd;</div>
2708
+ <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; }</div>
2709
+ <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160;}</div>
2702
2710
  </div><!-- fragment -->
2703
2711
  </div>
2704
2712
  </div>
@@ -2892,32 +2900,32 @@ Friends</h2></td></tr>
2892
2900
  </table>
2893
2901
  </div><div class="memdoc">
2894
2902
 
2895
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01031">1031</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2896
- <div class="fragment"><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;{</div>
2897
- <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div>
2898
- <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div>
2899
- <div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; {</div>
2900
- <div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2901
- <div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; }</div>
2902
- <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keywordflow">else</span></div>
2903
- <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; {</div>
2904
- <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov =</div>
2905
- <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; SVFUtil::isa&lt;MetadataAsValue&gt;(ov)</div>
2906
- <div class="line"><a name="l01042"></a><span class="lineno"> 1042</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>
2907
- <div class="line"><a name="l01043"></a><span class="lineno"> 1043</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>
2908
- <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="keywordflow">if</span> (ov-&gt;hasName())</div>
2909
- <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; svfov-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(ov-&gt;getName().str());</div>
2910
- <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordflow">else</span></div>
2911
- <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; {</div>
2912
- <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keyword">auto</span> str = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a7b8b93fec1dc8c63c0a5837a85b99129">LLVMUtil::llvmToString</a>(*ov);</div>
2913
- <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a02ccaa6664b87aaa9ee148d352344352">shortenLongInfo</a>(str, 30);</div>
2914
- <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; svfov-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(str));</div>
2915
- <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; }</div>
2916
- <div class="line"><a name="l01052"></a><span class="lineno"> 1052</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>
2917
- <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div>
2918
- <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">return</span> svfov;</div>
2919
- <div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; }</div>
2920
- <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;}</div>
2903
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01039">1039</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2904
+ <div class="fragment"><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;{</div>
2905
+ <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div>
2906
+ <div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div>
2907
+ <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; {</div>
2908
+ <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2909
+ <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; }</div>
2910
+ <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordflow">else</span></div>
2911
+ <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; {</div>
2912
+ <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov =</div>
2913
+ <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; SVFUtil::isa&lt;MetadataAsValue&gt;(ov)</div>
2914
+ <div class="line"><a name="l01050"></a><span class="lineno"> 1050</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>
2915
+ <div class="line"><a name="l01051"></a><span class="lineno"> 1051</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>
2916
+ <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="keywordflow">if</span> (ov-&gt;hasName())</div>
2917
+ <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; svfov-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(ov-&gt;getName().str());</div>
2918
+ <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">else</span></div>
2919
+ <div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; {</div>
2920
+ <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="keyword">auto</span> str = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a7b8b93fec1dc8c63c0a5837a85b99129">LLVMUtil::llvmToString</a>(*ov);</div>
2921
+ <div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <a class="code" href="LLVMModule_8cpp.html#a02ccaa6664b87aaa9ee148d352344352">shortenLongInfo</a>(str, 30);</div>
2922
+ <div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; svfov-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(str));</div>
2923
+ <div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; }</div>
2924
+ <div class="line"><a name="l01060"></a><span class="lineno"> 1060</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>
2925
+ <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div>
2926
+ <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keywordflow">return</span> svfov;</div>
2927
+ <div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; }</div>
2928
+ <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;}</div>
2921
2929
  </div><!-- fragment -->
2922
2930
  </div>
2923
2931
  </div>
@@ -2941,20 +2949,20 @@ Friends</h2></td></tr>
2941
2949
  <p>Get or create <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> and typeinfo </p>
2942
2950
  <p>TODO: set the void* to every element for now (imprecise) For example, [getPointerTo(): char -&mdash;&gt; i8*] [getPointerTo(): int -&mdash;&gt; i8*] [getPointerTo(): struct -&mdash;&gt; i8*]</p>
2943
2951
 
2944
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01095">1095</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2945
- <div class="fragment"><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;{</div>
2946
- <div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; assert(T &amp;&amp; <span class="stringliteral">&quot;SVFType should not be null&quot;</span>);</div>
2947
- <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div>
2948
- <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div>
2949
- <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2950
- <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; </div>
2951
- <div class="line"><a name="l01102"></a><span class="lineno"> 1102</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>
2952
- <div class="line"><a name="l01103"></a><span class="lineno"> 1103</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>
2953
- <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; svfType-&gt;<a class="code" href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">setTypeInfo</a>(stinfo);</div>
2954
- <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = PointerType::getInt8PtrTy(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>());</div>
2955
- <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; svfType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a3ddabbd763acaaca28cacbabe5bc7f3b">setPointerTo</a>(SVFUtil::cast&lt;SVFPointerType&gt;(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ptrTy)));</div>
2956
- <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keywordflow">return</span> svfType;</div>
2957
- <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;}</div>
2952
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01103">1103</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2953
+ <div class="fragment"><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;{</div>
2954
+ <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; assert(T &amp;&amp; <span class="stringliteral">&quot;SVFType should not be null&quot;</span>);</div>
2955
+ <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div>
2956
+ <div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div>
2957
+ <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
2958
+ <div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; </div>
2959
+ <div class="line"><a name="l01110"></a><span class="lineno"> 1110</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>
2960
+ <div class="line"><a name="l01111"></a><span class="lineno"> 1111</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>
2961
+ <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; svfType-&gt;<a class="code" href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">setTypeInfo</a>(stinfo);</div>
2962
+ <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = PointerType::getInt8PtrTy(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>());</div>
2963
+ <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; svfType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a3ddabbd763acaaca28cacbabe5bc7f3b">setPointerTo</a>(SVFUtil::cast&lt;SVFPointerType&gt;(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ptrTy)));</div>
2964
+ <div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="keywordflow">return</span> svfType;</div>
2965
+ <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;}</div>
2958
2966
  </div><!-- fragment -->
2959
2967
  </div>
2960
2968
  </div>
@@ -2974,28 +2982,28 @@ Friends</h2></td></tr>
2974
2982
  </table>
2975
2983
  </div><div class="memdoc">
2976
2984
 
2977
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01058">1058</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2978
- <div class="fragment"><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;{</div>
2979
- <div class="line"><a name="l01060"></a><span class="lineno"> 1060</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>
2980
- <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
2981
- <div class="line"><a name="l01062"></a><span class="lineno"> 1062</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>
2982
- <div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
2983
- <div class="line"><a name="l01064"></a><span class="lineno"> 1064</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>
2984
- <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div>
2985
- <div class="line"><a name="l01066"></a><span class="lineno"> 1066</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>
2986
- <div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div>
2987
- <div class="line"><a name="l01068"></a><span class="lineno"> 1068</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>
2988
- <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; {</div>
2989
- <div class="line"><a name="l01070"></a><span class="lineno"> 1070</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>
2990
- <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div>
2991
- <div class="line"><a name="l01072"></a><span class="lineno"> 1072</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>
2992
- <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div>
2993
- <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">else</span></div>
2994
- <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div>
2995
- <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; }</div>
2996
- <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="keywordflow">else</span></div>
2997
- <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div>
2998
- <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;}</div>
2985
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01066">1066</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
2986
+ <div class="fragment"><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;{</div>
2987
+ <div class="line"><a name="l01068"></a><span class="lineno"> 1068</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>
2988
+ <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
2989
+ <div class="line"><a name="l01070"></a><span class="lineno"> 1070</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>
2990
+ <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
2991
+ <div class="line"><a name="l01072"></a><span class="lineno"> 1072</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>
2992
+ <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div>
2993
+ <div class="line"><a name="l01074"></a><span class="lineno"> 1074</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>
2994
+ <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div>
2995
+ <div class="line"><a name="l01076"></a><span class="lineno"> 1076</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>
2996
+ <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; {</div>
2997
+ <div class="line"><a name="l01078"></a><span class="lineno"> 1078</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>
2998
+ <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div>
2999
+ <div class="line"><a name="l01080"></a><span class="lineno"> 1080</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>
3000
+ <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div>
3001
+ <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="keywordflow">else</span></div>
3002
+ <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div>
3003
+ <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; }</div>
3004
+ <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keywordflow">else</span></div>
3005
+ <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div>
3006
+ <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;}</div>
2999
3007
  </div><!-- fragment -->
3000
3008
  </div>
3001
3009
  </div>
@@ -3139,68 +3147,68 @@ Friends</h2></td></tr>
3139
3147
  </table>
3140
3148
  </div><div class="memdoc">
3141
3149
 
3142
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00389">389</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3143
- <div class="fragment"><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;{</div>
3144
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div>
3145
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">return</span>;</div>
3146
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">//process and stored dt &amp; df</span></div>
3147
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div>
3148
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a> df;</div>
3149
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</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>
3150
- <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; df.analyze(dt);</div>
3151
- <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a> loopInfo = <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>(dt);</div>
3152
- <div class="line"><a name="l00399"></a><span class="lineno"> 399</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>
3153
- <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = svffun-&gt;getLoopAndDomInfo();</div>
3154
- <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; </div>
3155
- <div class="line"><a name="l00402"></a><span class="lineno"> 402</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>
3156
- <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">for</span> (DominanceFrontierBase::const_iterator dfIter = df.begin(), eDfIter = df.end(); dfIter != eDfIter; dfIter++)</div>
3157
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; {</div>
3158
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* keyBB = dfIter-&gt;first;</div>
3159
- <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keyword">const</span> std::set&lt;BasicBlock* &gt;&amp; domSet = dfIter-&gt;second;</div>
3160
- <div class="line"><a name="l00407"></a><span class="lineno"> 407</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>
3161
- <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bbValue:domSet)</div>
3162
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div>
3163
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; valueBasicBlocks.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bbValue));</div>
3164
- <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div>
3165
- <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div>
3166
- <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; std::vector&lt;const SVFBasicBlock*&gt; reachableBBs;</div>
3167
- <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">LLVMUtil::getFunReachableBBs</a>(fun, reachableBBs);</div>
3168
- <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">setReachableBBs</a>(reachableBBs);</div>
3169
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; </div>
3170
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = fun-&gt;begin(), beit = fun-&gt;end(); bit!=beit; ++bit)</div>
3171
- <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; {</div>
3172
- <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &amp;bb = *bit;</div>
3173
- <div class="line"><a name="l00420"></a><span class="lineno"> 420</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>
3174
- <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* dtNode = dt.getNode(&amp;bb))</div>
3175
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div>
3176
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</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>
3177
- <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *dtNode)</div>
3178
- <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div>
3179
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</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>
3180
- <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; bbSet.insert(domSVFBB);</div>
3181
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div>
3182
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div>
3183
- <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; </div>
3184
- <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* pdtNode = pdt.getNode(&amp;bb))</div>
3185
- <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div>
3186
- <div class="line"><a name="l00433"></a><span class="lineno"> 433</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>
3187
- <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *pdtNode)</div>
3188
- <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; {</div>
3189
- <div class="line"><a name="l00436"></a><span class="lineno"> 436</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>
3190
- <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; bbSet.insert(domSVFBB);</div>
3191
- <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div>
3192
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div>
3193
- <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; </div>
3194
- <div class="line"><a name="l00441"></a><span class="lineno"> 441</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>
3195
- <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; {</div>
3196
- <div class="line"><a name="l00443"></a><span class="lineno"> 443</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>
3197
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div>
3198
- <div class="line"><a name="l00445"></a><span class="lineno"> 445</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>
3199
- <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">addToBB2LoopMap</a>(svfBB, loopbb);</div>
3200
- <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div>
3201
- <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div>
3202
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div>
3203
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;}</div>
3150
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00397">397</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3151
+ <div class="fragment"><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;{</div>
3152
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div>
3153
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">return</span>;</div>
3154
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="comment">//process and stored dt &amp; df</span></div>
3155
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div>
3156
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a> df;</div>
3157
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</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>
3158
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; df.analyze(dt);</div>
3159
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a> loopInfo = <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>(dt);</div>
3160
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</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>
3161
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = svffun-&gt;getLoopAndDomInfo();</div>
3162
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; </div>
3163
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</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>
3164
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">for</span> (DominanceFrontierBase::const_iterator dfIter = df.begin(), eDfIter = df.end(); dfIter != eDfIter; dfIter++)</div>
3165
+ <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; {</div>
3166
+ <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* keyBB = dfIter-&gt;first;</div>
3167
+ <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keyword">const</span> std::set&lt;BasicBlock* &gt;&amp; domSet = dfIter-&gt;second;</div>
3168
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</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>
3169
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bbValue:domSet)</div>
3170
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div>
3171
+ <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; valueBasicBlocks.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bbValue));</div>
3172
+ <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div>
3173
+ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div>
3174
+ <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; std::vector&lt;const SVFBasicBlock*&gt; reachableBBs;</div>
3175
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">LLVMUtil::getFunReachableBBs</a>(fun, reachableBBs);</div>
3176
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">setReachableBBs</a>(reachableBBs);</div>
3177
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; </div>
3178
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = fun-&gt;begin(), beit = fun-&gt;end(); bit!=beit; ++bit)</div>
3179
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div>
3180
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &amp;bb = *bit;</div>
3181
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</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>
3182
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* dtNode = dt.getNode(&amp;bb))</div>
3183
+ <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; {</div>
3184
+ <div class="line"><a name="l00431"></a><span class="lineno"> 431</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>
3185
+ <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *dtNode)</div>
3186
+ <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div>
3187
+ <div class="line"><a name="l00434"></a><span class="lineno"> 434</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>
3188
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; bbSet.insert(domSVFBB);</div>
3189
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div>
3190
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; }</div>
3191
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; </div>
3192
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* pdtNode = pdt.getNode(&amp;bb))</div>
3193
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div>
3194
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</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>
3195
+ <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *pdtNode)</div>
3196
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; {</div>
3197
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</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>
3198
+ <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; bbSet.insert(domSVFBB);</div>
3199
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div>
3200
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div>
3201
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; </div>
3202
+ <div class="line"><a name="l00449"></a><span class="lineno"> 449</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>
3203
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div>
3204
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</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>
3205
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div>
3206
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</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>
3207
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; ld-&gt;<a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">addToBB2LoopMap</a>(svfBB, loopbb);</div>
3208
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div>
3209
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
3210
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div>
3211
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;}</div>
3204
3212
  </div><!-- fragment -->
3205
3213
  </div>
3206
3214
  </div>
@@ -3228,57 +3236,57 @@ Friends</h2></td></tr>
3228
3236
  </table>
3229
3237
  </div><div class="memdoc">
3230
3238
 
3231
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00336">336</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3232
- <div class="fragment"><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;{</div>
3233
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = func-&gt;begin(), ebit = func-&gt;end(); bit != ebit; ++bit)</div>
3234
- <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; {</div>
3235
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &amp;*bit;</div>
3236
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</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>
3237
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</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>
3238
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div>
3239
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</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>
3240
- <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">addSuccBasicBlock</a>(svf_scc_bb);</div>
3241
- <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; }</div>
3242
- <div class="line"><a name="l00347"></a><span class="lineno"> 347</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>
3243
- <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div>
3244
- <div class="line"><a name="l00349"></a><span class="lineno"> 349</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>
3245
- <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">addPredBasicBlock</a>(svf_pred_bb);</div>
3246
- <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div>
3247
- <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator iit = bb-&gt;begin(), eiit = bb-&gt;end(); iit != eiit; ++iit)</div>
3248
- <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; {</div>
3249
- <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &amp;*iit;</div>
3250
- <div class="line"><a name="l00355"></a><span class="lineno"> 355</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>
3251
- <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; {</div>
3252
- <div class="line"><a name="l00357"></a><span class="lineno"> 357</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>
3253
- <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>* svfcall = SVFUtil::cast&lt;SVFCallInst&gt;(svfinst);</div>
3254
- <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keyword">auto</span> called_llvmval = call-&gt;getCalledOperand()-&gt;stripPointerCasts();</div>
3255
- <div class="line"><a name="l00360"></a><span class="lineno"> 360</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>
3256
- <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div>
3257
- <div class="line"><a name="l00362"></a><span class="lineno"> 362</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#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(called_llvmfunc);</div>
3258
- <div class="line"><a name="l00363"></a><span class="lineno"> 363</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>
3259
- <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(callee);</div>
3260
- <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div>
3261
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">else</span></div>
3262
- <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div>
3263
- <div class="line"><a name="l00368"></a><span class="lineno"> 368</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>
3264
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div>
3265
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</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>
3266
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div>
3267
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; virtualCall-&gt;setVtablePtr(<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">LLVMUtil::getVCallVtblPtr</a>(call)));</div>
3268
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; virtualCall-&gt;setFunIdxInVtable(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">LLVMUtil::getVCallIdx</a>(call));</div>
3269
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; virtualCall-&gt;setFunNameOfVirtualCall(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">LLVMUtil::getFunNameOfVCallSite</a>(call));</div>
3270
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
3271
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; call-&gt;arg_size(); i++)</div>
3272
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div>
3273
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</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>
3274
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">addArgument</a>(svfval);</div>
3275
- <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div>
3276
- <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div>
3277
- <div class="line"><a name="l00382"></a><span class="lineno"> 382</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>
3278
- <div class="line"><a name="l00383"></a><span class="lineno"> 383</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>
3279
- <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div>
3280
- <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</div>
3281
- <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;}</div>
3239
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00344">344</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3240
+ <div class="fragment"><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;{</div>
3241
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = func-&gt;begin(), ebit = func-&gt;end(); bit != ebit; ++bit)</div>
3242
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div>
3243
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &amp;*bit;</div>
3244
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</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>
3245
+ <div class="line"><a name="l00350"></a><span class="lineno"> 350</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>
3246
+ <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div>
3247
+ <div class="line"><a name="l00352"></a><span class="lineno"> 352</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>
3248
+ <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">addSuccBasicBlock</a>(svf_scc_bb);</div>
3249
+ <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div>
3250
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</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>
3251
+ <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; {</div>
3252
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</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>
3253
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; svfbb-&gt;<a class="code" href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">addPredBasicBlock</a>(svf_pred_bb);</div>
3254
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div>
3255
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator iit = bb-&gt;begin(), eiit = bb-&gt;end(); iit != eiit; ++iit)</div>
3256
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div>
3257
+ <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &amp;*iit;</div>
3258
+ <div class="line"><a name="l00363"></a><span class="lineno"> 363</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>
3259
+ <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; {</div>
3260
+ <div class="line"><a name="l00365"></a><span class="lineno"> 365</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>
3261
+ <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>* svfcall = SVFUtil::cast&lt;SVFCallInst&gt;(svfinst);</div>
3262
+ <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keyword">auto</span> called_llvmval = call-&gt;getCalledOperand()-&gt;stripPointerCasts();</div>
3263
+ <div class="line"><a name="l00368"></a><span class="lineno"> 368</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>
3264
+ <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; {</div>
3265
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</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#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(called_llvmfunc);</div>
3266
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</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>
3267
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(callee);</div>
3268
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div>
3269
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">else</span></div>
3270
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; {</div>
3271
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</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>
3272
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div>
3273
+ <div class="line"><a name="l00378"></a><span class="lineno"> 378</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>
3274
+ <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; {</div>
3275
+ <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; virtualCall-&gt;setVtablePtr(<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">LLVMUtil::getVCallVtblPtr</a>(call)));</div>
3276
+ <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; virtualCall-&gt;setFunIdxInVtable(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">LLVMUtil::getVCallIdx</a>(call));</div>
3277
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; virtualCall-&gt;setFunNameOfVirtualCall(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">LLVMUtil::getFunNameOfVCallSite</a>(call));</div>
3278
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div>
3279
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; call-&gt;arg_size(); i++)</div>
3280
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div>
3281
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</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>
3282
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; svfcall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">addArgument</a>(svfval);</div>
3283
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div>
3284
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div>
3285
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</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>
3286
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</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>
3287
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
3288
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div>
3289
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;}</div>
3282
3290
  </div><!-- fragment -->
3283
3291
  </div>
3284
3292
  </div>
@@ -3306,27 +3314,27 @@ Friends</h2></td></tr>
3306
3314
  </div><div class="memdoc">
3307
3315
  <p>Function</p>
3308
3316
 
3309
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00318">318</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3310
- <div class="fragment"><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;{</div>
3311
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</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>
3312
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div>
3313
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</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>
3314
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; {</div>
3315
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</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>
3316
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002">initSVFBasicBlock</a>(&amp;f);</div>
3317
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; </div>
3318
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun))</div>
3319
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div>
3320
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">initDomTree</a>(svffun, &amp;f);</div>
3321
- <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div>
3322
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
3323
- <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; }</div>
3324
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;}</div>
3317
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00326">326</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3318
+ <div class="fragment"><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;{</div>
3319
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</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>
3320
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div>
3321
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</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>
3322
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; {</div>
3323
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</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>
3324
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002">initSVFBasicBlock</a>(&amp;f);</div>
3325
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; </div>
3326
+ <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun))</div>
3327
+ <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div>
3328
+ <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">initDomTree</a>(svffun, &amp;f);</div>
3329
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div>
3330
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div>
3331
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div>
3332
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;}</div>
3325
3333
  </div><!-- fragment -->
3326
3334
  </div>
3327
3335
  </div>
3328
- <a id="a9247b3240ea36913baf7e7aa6d4a37e8"></a>
3329
- <h2 class="memtitle"><span class="permalink"><a href="#a9247b3240ea36913baf7e7aa6d4a37e8">&#9670;&nbsp;</a></span>loadExtModules()</h2>
3336
+ <a id="a8820d1df9098db6eadf3a9c67e380e55"></a>
3337
+ <h2 class="memtitle"><span class="permalink"><a href="#a8820d1df9098db6eadf3a9c67e380e55">&#9670;&nbsp;</a></span>loadExtAPIModules()</h2>
3330
3338
 
3331
3339
  <div class="memitem">
3332
3340
  <div class="memproto">
@@ -3335,7 +3343,7 @@ Friends</h2></td></tr>
3335
3343
  <td class="mlabels-left">
3336
3344
  <table class="memname">
3337
3345
  <tr>
3338
- <td class="memname">void LLVMModuleSet::loadExtModules </td>
3346
+ <td class="memname">void LLVMModuleSet::loadExtAPIModules </td>
3339
3347
  <td>(</td>
3340
3348
  <td class="paramname"></td><td>)</td>
3341
3349
  <td></td>
@@ -3348,30 +3356,29 @@ Friends</h2></td></tr>
3348
3356
  </table>
3349
3357
  </div><div class="memdoc">
3350
3358
 
3351
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00555">555</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3352
- <div class="fragment"><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;{</div>
3353
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="comment">// has external bc</span></div>
3354
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> = std::make_unique&lt;LLVMContext&gt;();</div>
3355
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>().size() &gt; 0)</div>
3356
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; {</div>
3357
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> extModuleName = <a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>();</div>
3358
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(extModuleName))</div>
3359
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; {</div>
3360
- <div class="line"><a name="l00564"></a><span class="lineno"> 564</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>
3361
- <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; abort();</div>
3362
- <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div>
3363
- <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3364
- <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(extModuleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
3365
- <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3366
- <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; {</div>
3367
- <div class="line"><a name="l00571"></a><span class="lineno"> 571</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>
3368
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3359
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00564">564</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3360
+ <div class="fragment"><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;{</div>
3361
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">// has external bc</span></div>
3362
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>().size() &gt; 0)</div>
3363
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; {</div>
3364
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> extModuleName = <a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>();</div>
3365
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(extModuleName))</div>
3366
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; {</div>
3367
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</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>
3369
3368
  <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; abort();</div>
3370
3369
  <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; }</div>
3371
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(*mod);</div>
3372
- <div class="line"><a name="l00576"></a><span class="lineno"> 576</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>
3373
- <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div>
3374
- <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;}</div>
3370
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3371
+ <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(extModuleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
3372
+ <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3373
+ <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; {</div>
3374
+ <div class="line"><a name="l00579"></a><span class="lineno"> 579</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>
3375
+ <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3376
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; abort();</div>
3377
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; }</div>
3378
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(*mod);</div>
3379
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</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>
3380
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div>
3381
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;}</div>
3375
3382
  </div><!-- fragment -->
3376
3383
  </div>
3377
3384
  </div>
@@ -3399,60 +3406,60 @@ Friends</h2></td></tr>
3399
3406
  </table>
3400
3407
  </div><div class="memdoc">
3401
3408
 
3402
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00500">500</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3403
- <div class="fragment"><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;{</div>
3404
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; </div>
3405
- <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="comment">// We read SVFIR from LLVM IR</span></div>
3406
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</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>
3407
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div>
3408
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span>(moduleNameVec.empty())</div>
3409
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div>
3410
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</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>
3411
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; exit(0);</div>
3412
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div>
3413
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="comment">//assert(!moduleNameVec.empty() &amp;&amp; &quot;no LLVM bc file is found!&quot;);</span></div>
3414
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div>
3415
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div>
3416
- <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">else</span></div>
3417
- <div class="line"><a name="l00515"></a><span class="lineno"> 515</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>
3418
- <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; </div>
3419
- <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="comment">//</span></div>
3420
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="comment">// To avoid the following type bugs (t1 != t3) when parsing multiple modules,</span></div>
3421
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="comment">// We should use only one LLVMContext object for multiple modules in the same thread.</span></div>
3422
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="comment">// No such problem if only one module is processed by SVF.</span></div>
3423
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3424
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="comment">// LLVMContext ctxa,ctxb;</span></div>
3425
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="comment">// IntegerType * t1 = IntegerType::get(ctxa,32);</span></div>
3426
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="comment">// IntegerType * t2 = IntegerType::get(ctxa,32);</span></div>
3427
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="comment">// assert(t1 == t2);</span></div>
3428
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="comment">// IntegerType * t3 = IntegerType::get(ctxb,32);</span></div>
3429
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="comment">// IntegerType * t4 = IntegerType::get(ctxb,32);</span></div>
3430
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="comment">// assert(t3 == t4);</span></div>
3431
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="comment">// assert(t1 != t3);</span></div>
3409
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00509">509</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3410
+ <div class="fragment"><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;{</div>
3411
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; </div>
3412
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="comment">// We read SVFIR from LLVM IR</span></div>
3413
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</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>
3414
+ <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div>
3415
+ <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">if</span>(moduleNameVec.empty())</div>
3416
+ <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; {</div>
3417
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</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>
3418
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; exit(0);</div>
3419
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div>
3420
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="comment">//assert(!moduleNameVec.empty() &amp;&amp; &quot;no LLVM bc file is found!&quot;);</span></div>
3421
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div>
3422
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div>
3423
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">else</span></div>
3424
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</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>
3425
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; </div>
3426
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="comment">//</span></div>
3427
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="comment">// To avoid the following type bugs (t1 != t3) when parsing multiple modules,</span></div>
3428
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="comment">// We should use only one LLVMContext object for multiple modules in the same thread.</span></div>
3429
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="comment">// No such problem if only one module is processed by SVF.</span></div>
3432
3430
  <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3433
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="comment">//</span></div>
3434
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> = std::make_unique&lt;LLVMContext&gt;();</div>
3435
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; </div>
3436
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</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>
3437
- <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; {</div>
3438
- <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(moduleName))</div>
3439
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div>
3440
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</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>
3441
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; abort();</div>
3442
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; }</div>
3443
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; </div>
3444
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3445
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(moduleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
3446
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3447
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; {</div>
3448
- <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;load module: &quot;</span> &lt;&lt; moduleName &lt;&lt; <span class="stringliteral">&quot;failed!!\n\n&quot;</span>;</div>
3449
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3431
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="comment">// LLVMContext ctxa,ctxb;</span></div>
3432
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="comment">// IntegerType * t1 = IntegerType::get(ctxa,32);</span></div>
3433
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="comment">// IntegerType * t2 = IntegerType::get(ctxa,32);</span></div>
3434
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="comment">// assert(t1 == t2);</span></div>
3435
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="comment">// IntegerType * t3 = IntegerType::get(ctxb,32);</span></div>
3436
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">// IntegerType * t4 = IntegerType::get(ctxb,32);</span></div>
3437
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="comment">// assert(t3 == t4);</span></div>
3438
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">// assert(t1 != t3);</span></div>
3439
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div>
3440
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="comment">//</span></div>
3441
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> = std::make_unique&lt;LLVMContext&gt;();</div>
3442
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; </div>
3443
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</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>
3444
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; {</div>
3445
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(moduleName))</div>
3446
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; {</div>
3447
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</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>
3450
3448
  <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; abort();</div>
3451
3449
  <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }</div>
3452
- <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(*mod);</div>
3453
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</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>
3454
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; }</div>
3455
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;}</div>
3450
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; </div>
3451
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
3452
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; std::unique_ptr&lt;Module&gt; mod = parseIRFile(moduleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
3453
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
3454
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; {</div>
3455
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</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>
3456
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; Err.print(<span class="stringliteral">&quot;SVFModuleLoader&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
3457
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; abort();</div>
3458
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div>
3459
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(*mod);</div>
3460
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</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>
3461
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div>
3462
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;}</div>
3456
3463
  </div><!-- fragment -->
3457
3464
  </div>
3458
3465
  </div>
@@ -3484,27 +3491,27 @@ Friends</h2></td></tr>
3484
3491
  <p><a class="el" href="classSVF_1_1BreakConstantGEPs.html">BreakConstantGEPs</a> Pass</p>
3485
3492
  <p><a class="el" href="classSVF_1_1MergeFunctionRets.html">MergeFunctionRets</a> Pass</p>
3486
3493
 
3487
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00456">456</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3488
- <div class="fragment"><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;{</div>
3489
- <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; std::unique_ptr&lt;BreakConstantGEPs&gt; p1 = std::make_unique&lt;BreakConstantGEPs&gt;();</div>
3490
- <div class="line"><a name="l00460"></a><span class="lineno"> 460</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>
3491
- <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; {</div>
3492
- <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; p1-&gt;runOnModule(M);</div>
3493
- <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div>
3494
- <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; </div>
3495
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; std::unique_ptr&lt;UnifyFunctionExitNodes&gt; p2 =</div>
3496
- <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; std::make_unique&lt;UnifyFunctionExitNodes&gt;();</div>
3494
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00464">464</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3495
+ <div class="fragment"><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;{</div>
3496
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; std::unique_ptr&lt;BreakConstantGEPs&gt; p1 = std::make_unique&lt;BreakConstantGEPs&gt;();</div>
3497
3497
  <div class="line"><a name="l00468"></a><span class="lineno"> 468</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>
3498
3498
  <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; {</div>
3499
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</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>
3500
- <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; {</div>
3501
- <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &amp;fun = *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>;</div>
3502
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
3503
- <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">continue</span>;</div>
3504
- <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; p2-&gt;runOnFunction(fun);</div>
3505
- <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div>
3506
- <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div>
3507
- <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;}</div>
3499
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; p1-&gt;runOnModule(M);</div>
3500
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div>
3501
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; </div>
3502
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; std::unique_ptr&lt;UnifyFunctionExitNodes&gt; p2 =</div>
3503
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; std::make_unique&lt;UnifyFunctionExitNodes&gt;();</div>
3504
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</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>
3505
+ <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; {</div>
3506
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</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>
3507
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; {</div>
3508
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &amp;fun = *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>;</div>
3509
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span> (fun.isDeclaration())</div>
3510
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">continue</span>;</div>
3511
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; p2-&gt;runOnFunction(fun);</div>
3512
+ <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div>
3513
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; }</div>
3514
+ <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;}</div>
3508
3515
  </div><!-- fragment -->
3509
3516
  </div>
3510
3517
  </div>
@@ -3532,25 +3539,26 @@ Friends</h2></td></tr>
3532
3539
  </table>
3533
3540
  </div><div class="memdoc">
3534
3541
 
3535
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00480">480</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3536
- <div class="fragment"><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;{</div>
3537
- <div class="line"><a name="l00482"></a><span class="lineno"> 482</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>
3538
- <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a>(moduleNameVec);</div>
3539
- <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div>
3540
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; </div>
3541
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> preProcessSuffix = <span class="stringliteral">&quot;.pre.bc&quot;</span>;</div>
3542
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="comment">// Get the existing module names, remove old extention, add preProcessSuffix</span></div>
3543
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; moduleNameVec.size(); i++)</div>
3544
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; {</div>
3545
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lastIndex = moduleNameVec[i].find_last_of(<span class="stringliteral">&quot;.&quot;</span>);</div>
3546
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> rawName = moduleNameVec[i].substr(0, lastIndex);</div>
3547
- <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; moduleNameVec[i] = (rawName + preProcessSuffix);</div>
3548
- <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; }</div>
3542
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00488">488</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3543
+ <div class="fragment"><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;{</div>
3544
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</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>
3545
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a>(moduleNameVec);</div>
3546
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8820d1df9098db6eadf3a9c67e380e55">loadExtAPIModules</a>();</div>
3547
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div>
3549
3548
  <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; </div>
3550
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">dumpModulesToFile</a>(preProcessSuffix);</div>
3551
- <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">preProcessed</a> = <span class="keyword">true</span>;</div>
3552
- <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">releaseLLVMModuleSet</a>();</div>
3553
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;}</div>
3549
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> preProcessSuffix = <span class="stringliteral">&quot;.pre.bc&quot;</span>;</div>
3550
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="comment">// Get the existing module names, remove old extention, add preProcessSuffix</span></div>
3551
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; moduleNameVec.size(); i++)</div>
3552
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; {</div>
3553
+ <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lastIndex = moduleNameVec[i].find_last_of(<span class="stringliteral">&quot;.&quot;</span>);</div>
3554
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> rawName = moduleNameVec[i].substr(0, lastIndex);</div>
3555
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; moduleNameVec[i] = (rawName + preProcessSuffix);</div>
3556
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div>
3557
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; </div>
3558
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; mset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">dumpModulesToFile</a>(preProcessSuffix);</div>
3559
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">preProcessed</a> = <span class="keyword">true</span>;</div>
3560
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">releaseLLVMModuleSet</a>();</div>
3561
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;}</div>
3554
3562
  </div><!-- fragment -->
3555
3563
  </div>
3556
3564
  </div>
@@ -3619,31 +3627,31 @@ Friends</h2></td></tr>
3619
3627
  </table>
3620
3628
  </div><div class="memdoc">
3621
3629
 
3622
- <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00919">919</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3623
- <div class="fragment"><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160;{</div>
3624
- <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVFValue2LLVMValue</a>[svfvalue] = val;</div>
3625
- <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; </div>
3626
- <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">LLVMUtil::isPtrInUncalledFunction</a>(val))</div>
3627
- <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; svfvalue-&gt;setPtrInUncalledFunction();</div>
3628
- <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
3629
- <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; svfvalue-&gt;setConstDataOrAggData();</div>
3630
- <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; </div>
3631
- <div class="line"><a name="l00928"></a><span class="lineno"> 928</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>
3632
- <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; {</div>
3633
- <div class="line"><a name="l00930"></a><span class="lineno"> 930</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#a9e0c786488dfdc4605d4cbcf9943c85a">LLVMUtil::getGlobalRep</a>(val);</div>
3634
- <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; assert(SVFUtil::isa&lt;GlobalValue&gt;(llvmVal) &amp;&amp; <span class="stringliteral">&quot;not a GlobalValue?&quot;</span>);</div>
3635
- <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; glob-&gt;setDefGlobalForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(SVFUtil::cast&lt;GlobalValue&gt;(llvmVal)));</div>
3636
- <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; }</div>
3637
- <div class="line"><a name="l00934"></a><span class="lineno"> 934</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>
3638
- <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; {</div>
3639
- <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::cast&lt;Function&gt;(val);</div>
3640
- <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; svffun-&gt;setIsNotRet(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">LLVMUtil::functionDoesNotRet</a>(func));</div>
3641
- <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; svffun-&gt;setIsUncalledFunction(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">LLVMUtil::isUncalledFunction</a>(func));</div>
3642
- <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; svffun-&gt;setDefFunForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(func)));</div>
3643
- <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; }</div>
3644
- <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; </div>
3645
- <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; svfvalue-&gt;setSourceLoc(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(val));</div>
3646
- <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;}</div>
3630
+ <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00927">927</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
3631
+ <div class="fragment"><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160;{</div>
3632
+ <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVFValue2LLVMValue</a>[svfvalue] = val;</div>
3633
+ <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; </div>
3634
+ <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">LLVMUtil::isPtrInUncalledFunction</a>(val))</div>
3635
+ <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; svfvalue-&gt;setPtrInUncalledFunction();</div>
3636
+ <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
3637
+ <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; svfvalue-&gt;setConstDataOrAggData();</div>
3638
+ <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; </div>
3639
+ <div class="line"><a name="l00936"></a><span class="lineno"> 936</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>
3640
+ <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; {</div>
3641
+ <div class="line"><a name="l00938"></a><span class="lineno"> 938</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#a9e0c786488dfdc4605d4cbcf9943c85a">LLVMUtil::getGlobalRep</a>(val);</div>
3642
+ <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; assert(SVFUtil::isa&lt;GlobalValue&gt;(llvmVal) &amp;&amp; <span class="stringliteral">&quot;not a GlobalValue?&quot;</span>);</div>
3643
+ <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; glob-&gt;setDefGlobalForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(SVFUtil::cast&lt;GlobalValue&gt;(llvmVal)));</div>
3644
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; }</div>
3645
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</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>
3646
+ <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; {</div>
3647
+ <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::cast&lt;Function&gt;(val);</div>
3648
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; svffun-&gt;setIsNotRet(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">LLVMUtil::functionDoesNotRet</a>(func));</div>
3649
+ <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; svffun-&gt;setIsUncalledFunction(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">LLVMUtil::isUncalledFunction</a>(func));</div>
3650
+ <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; svffun-&gt;setDefFunForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(func)));</div>
3651
+ <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; }</div>
3652
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; </div>
3653
+ <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; svfvalue-&gt;setSourceLoc(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(val));</div>
3654
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160;}</div>
3647
3655
  </div><!-- fragment -->
3648
3656
  </div>
3649
3657
  </div>
@@ -4148,7 +4156,7 @@ Friends</h2></td></tr>
4148
4156
  <div class="ttc" id="anamespaceSVF_html_a827d09974dc7bf0849f96823cc2fee89"><div class="ttname"><a href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">SVF::DomTreeNode</a></div><div class="ttdeci">llvm::DomTreeNode DomTreeNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
4149
4157
  <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#l00088">LLVMModule.h:88</a></div></div>
4150
4158
  <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#l00121">LLVMModule.h:121</a></div></div>
4151
- <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#l00851">LLVMModule.cpp:851</a></div></div>
4159
+ <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#l00859">LLVMModule.cpp:859</a></div></div>
4152
4160
  <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#l00471">LLVMUtil.cpp:471</a></div></div>
4153
4161
  <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#l00070">LLVMModule.cpp:70</a></div></div>
4154
4162
  <div class="ttc" id="aclassSVF_1_1SVFType_html_aef5999ada62dac3cc946d832ac66948c"><div class="ttname"><a href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">SVF::SVFType::setTypeInfo</a></div><div class="ttdeci">void setTypeInfo(StInfo *ti)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00302">SVFType.h:302</a></div></div>
@@ -4157,7 +4165,7 @@ Friends</h2></td></tr>
4157
4165
  <div class="ttc" id="anamespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdoc">LLVM Dominators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00131">BasicTypes.h:131</a></div></div>
4158
4166
  <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>
4159
4167
  <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#l00080">LLVMModule.h:80</a></div></div>
4160
- <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#l01147">LLVMModule.cpp:1147</a></div></div>
4168
+ <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#l01155">LLVMModule.cpp:1155</a></div></div>
4161
4169
  <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_ac1b15d8f9c2499add8dbc889ae5cab65"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">SVF::SVFBasicBlock::addInstruction</a></div><div class="ttdeci">void addInstruction(const SVFInstruction *inst)</div><div class="ttdoc">Function where this BasicBlock is.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00508">SVFValue.h:508</a></div></div>
4162
4170
  <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#l00126">LLVMModule.h:126</a></div></div>
4163
4171
  <div class="ttc" id="anamespaceSVF_html_a94824519e439aeef1568d415b6f7331c"><div class="ttname"><a href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">SVF::IRBuilder</a></div><div class="ttdeci">llvm::IRBuilder IRBuilder</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
@@ -4167,7 +4175,7 @@ Friends</h2></td></tr>
4167
4175
  <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#l00165">LLVMModule.h:165</a></div></div>
4168
4176
  <div class="ttc" id="anamespaceSVF_html_a6ec0236303089a01fd9da36a8bb84e0a"><div class="ttname"><a href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">SVF::FunctionType</a></div><div class="ttdeci">llvm::FunctionType FunctionType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
4169
4177
  <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#l00136">LLVMModule.h:136</a></div></div>
4170
- <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#l00764">LLVMModule.cpp:764</a></div></div>
4178
+ <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#l00772">LLVMModule.cpp:772</a></div></div>
4171
4179
  <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#l00683">SVFValue.h:683</a></div></div>
4172
4180
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a91083d9504ae5d220b28e0b3e461d4aa"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">SVF::SymbolTableInfo::addTypeInfo</a></div><div class="ttdeci">void addTypeInfo(const SVFType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00345">SymbolTableInfo.h:345</a></div></div>
4173
4181
  <div class="ttc" id="aclassSVF_1_1SVFPointerType_html"><div class="ttname"><a href="classSVF_1_1SVFPointerType.html">SVF::SVFPointerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00332">SVFType.h:332</a></div></div>
@@ -4176,7 +4184,7 @@ Friends</h2></td></tr>
4176
4184
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae2a1fa0b908cf372c50af90e62c4bf2b"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">SVF::LLVMModuleSet::GlobalDefToRepMap</a></div><div class="ttdeci">GlobalDefToRepMapTy GlobalDefToRepMap</div><div class="ttdoc">Global definition to a rep definition map.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00078">LLVMModule.h:78</a></div></div>
4177
4185
  <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#l00260">LLVMModule.h:260</a></div></div>
4178
4186
  <div class="ttc" id="anamespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00084">BasicTypes.h:84</a></div></div>
4179
- <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#l00894">LLVMModule.cpp:894</a></div></div>
4187
+ <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#l00902">LLVMModule.cpp:902</a></div></div>
4180
4188
  <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#l00216">LLVMModule.h:216</a></div></div>
4181
4189
  <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#l00220">SVFValue.h:220</a></div></div>
4182
4190
  <div class="ttc" id="anamespaceSVF_html_a3d9e7f32dc17fe8d40f8d6a011403b91"><div class="ttname"><a href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">SVF::IntegerType</a></div><div class="ttdeci">llvm::IntegerType IntegerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
@@ -4185,21 +4193,21 @@ Friends</h2></td></tr>
4185
4193
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac59b07cafcbacc950eefea4082425b63"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">SVF::LLVMModuleSet::llvmModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * llvmModuleSet</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00065">LLVMModule.h:65</a></div></div>
4186
4194
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_af4bd487b3b6efe55bf869b869f5e8a80"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">SVF::LLVMModuleSet::addConstantDataMap</a></div><div class="ttdeci">void addConstantDataMap(const ConstantData *cd, SVFConstantData *svfcd)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00170">LLVMModule.h:170</a></div></div>
4187
4195
  <div class="ttc" id="anamespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
4188
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a15e97e3f2ba62d3fe444bb17cd637dbd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a15e97e3f2ba62d3fe444bb17cd637dbd">SVF::LLVMModuleSet::buildSymbolTable</a></div><div class="ttdeci">void buildSymbolTable() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00135">LLVMModule.cpp:135</a></div></div>
4196
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a15e97e3f2ba62d3fe444bb17cd637dbd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a15e97e3f2ba62d3fe444bb17cd637dbd">SVF::LLVMModuleSet::buildSymbolTable</a></div><div class="ttdeci">void buildSymbolTable() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00136">LLVMModule.cpp:136</a></div></div>
4189
4197
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_a7af3076a26060090377d1f74293560fe"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a7af3076a26060090377d1f74293560fe">SVF::SVFModule::setPagFromTXT</a></div><div class="ttdeci">static void setPagFromTXT(const std::string &amp;txt)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00084">SVFModule.h:84</a></div></div>
4190
4198
  <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#l00577">SVFType.h:577</a></div></div>
4191
4199
  <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#l00150">LLVMModule.h:150</a></div></div>
4192
- <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#l01031">LLVMModule.cpp:1031</a></div></div>
4200
+ <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#l01039">LLVMModule.cpp:1039</a></div></div>
4193
4201
  <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 flattenning (including array elements)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00225">SVFType.h:225</a></div></div>
4194
4202
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2c61d741afbcfa853b505cd391f29f9b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">SVF::LLVMUtil::isUncalledFunction</a></div><div class="ttdeci">bool isUncalledFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller?</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00144">LLVMUtil.cpp:144</a></div></div>
4195
4203
  <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#l00908">SVFValue.h:908</a></div></div>
4196
- <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#l01095">LLVMModule.cpp:1095</a></div></div>
4204
+ <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#l01103">LLVMModule.cpp:1103</a></div></div>
4197
4205
  <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#l00111">SVFModule.h:111</a></div></div>
4198
4206
  <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#l01074">SVFValue.h:1074</a></div></div>
4199
4207
  <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#l00084">LLVMModule.h:84</a></div></div>
4200
4208
  <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#l00105">LLVMModule.h:105</a></div></div>
4201
4209
  <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#l00195">LLVMModule.h:195</a></div></div>
4202
- <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#l01259">LLVMModule.cpp:1259</a></div></div>
4210
+ <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#l01267">LLVMModule.cpp:1267</a></div></div>
4203
4211
  <div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
4204
4212
  <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#l00121">SVFModule.h:121</a></div></div>
4205
4213
  <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#l00131">LLVMModule.h:131</a></div></div>
@@ -4225,11 +4233,11 @@ Friends</h2></td></tr>
4225
4233
  <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#l00202">LLVMModule.h:202</a></div></div>
4226
4234
  <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#l00081">LLVMModule.h:81</a></div></div>
4227
4235
  <div class="ttc" id="anamespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
4228
- <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#l00580">LLVMModule.cpp:580</a></div></div>
4236
+ <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#l00588">LLVMModule.cpp:588</a></div></div>
4229
4237
  <div class="ttc" id="aclassSVF_1_1SVFStat_html_aa4950ec26b66a085ad38ac154b789db5"><div class="ttname"><a href="classSVF_1_1SVFStat.html#aa4950ec26b66a085ad38ac154b789db5">SVF::SVFStat::timeOfBuildingLLVMModule</a></div><div class="ttdeci">static double timeOfBuildingLLVMModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00090">SVFStat.h:90</a></div></div>
4230
4238
  <div class="ttc" id="anamespaceSVF_html_a0fd33072b099f61eaa642e94ed0c03fc"><div class="ttname"><a href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">SVF::GlobalAlias</a></div><div class="ttdeci">llvm::GlobalAlias GlobalAlias</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
4231
4239
  <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="ttdoc">Greater than IntervalValues.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00581">IntervalValue.h:581</a></div></div>
4232
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_af8edfe08027020f14b81b44362c6018e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#af8edfe08027020f14b81b44362c6018e">SVF::LLVMModuleSet::build</a></div><div class="ttdeci">void build()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00150">LLVMModule.cpp:150</a></div></div>
4240
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_af8edfe08027020f14b81b44362c6018e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#af8edfe08027020f14b81b44362c6018e">SVF::LLVMModuleSet::build</a></div><div class="ttdeci">void build()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00151">LLVMModule.cpp:151</a></div></div>
4233
4241
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_aa6627399cf4d30d576f76f681d83449d"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa6627399cf4d30d576f76f681d83449d">SVF::SVFModule::addAliasSet</a></div><div class="ttdeci">void addAliasSet(SVFGlobalValue *alias)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00116">SVFModule.h:116</a></div></div>
4234
4242
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac3e70bd338be3a54330be5dc10321eb3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">SVF::LLVMModuleSet::LLVMValue2SVFOtherValue</a></div><div class="ttdeci">LLVMValue2SVFOtherValueMap LLVMValue2SVFOtherValue</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00085">LLVMModule.h:85</a></div></div>
4235
4243
  <div class="ttc" id="aclassSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00047">SVFStat.cpp:47</a></div></div>
@@ -4244,6 +4252,7 @@ Friends</h2></td></tr>
4244
4252
  <div class="ttc" id="aclassSVF_1_1SVFArrayType_html"><div class="ttname"><a href="classSVF_1_1SVFArrayType.html">SVF::SVFArrayType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00443">SVFType.h:443</a></div></div>
4245
4253
  <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#l00068">LLVMModule.cpp:68</a></div></div>
4246
4254
  <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#l00082">LLVMModule.h:82</a></div></div>
4255
+ <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#l00564">LLVMModule.cpp:564</a></div></div>
4247
4256
  <div class="ttc" id="aclassSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00242">SVFType.h:242</a></div></div>
4248
4257
  <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#l00107">SVFModule.h:107</a></div></div>
4249
4258
  <div class="ttc" id="aclassSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00132">SVFType.h:132</a></div></div>
@@ -4262,19 +4271,19 @@ Friends</h2></td></tr>
4262
4271
  <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#l00307">LLVMModule.h:307</a></div></div>
4263
4272
  <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#l00939">SVFValue.h:939</a></div></div>
4264
4273
  <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#l00975">SVFValue.h:975</a></div></div>
4265
- <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#l00500">LLVMModule.cpp:500</a></div></div>
4274
+ <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#l00509">LLVMModule.cpp:509</a></div></div>
4266
4275
  <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#l00253">LLVMModule.h:253</a></div></div>
4267
4276
  <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#l00823">SVFValue.h:823</a></div></div>
4268
4277
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ad06a92bf8bc556de742e0ffdf79ffafe"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">SVF::LLVMModuleSet::cxts</a></div><div class="ttdeci">std::unique_ptr&lt; LLVMContext &gt; cxts</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
4269
4278
  <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#l00099">SVFModule.h:99</a></div></div>
4270
- <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#l01316">LLVMModule.cpp:1316</a></div></div>
4279
+ <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#l01324">LLVMModule.cpp:1324</a></div></div>
4271
4280
  <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#l00070">LLVMModule.h:70</a></div></div>
4272
4281
  <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#l00068">LLVMModule.h:68</a></div></div>
4273
4282
  <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 aggrate.</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00218">SVFType.h:218</a></div></div>
4274
4283
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00081">SymbolTableInfo.cpp:81</a></div></div>
4275
4284
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9e0c786488dfdc4605d4cbcf9943c85a"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">SVF::LLVMUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00390">LLVMUtil.h:390</a></div></div>
4276
- <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#l00669">LLVMModule.cpp:669</a></div></div>
4277
- <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#l00389">LLVMModule.cpp:389</a></div></div>
4285
+ <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#l00677">LLVMModule.cpp:677</a></div></div>
4286
+ <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#l00397">LLVMModule.cpp:397</a></div></div>
4278
4287
  <div class="ttc" id="anamespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
4279
4288
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab1b4c565ae6be788b934defc21a5cfaf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">SVF::LLVMUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00734">LLVMUtil.cpp:734</a></div></div>
4280
4289
  <div class="ttc" id="anamespaceSVF_html_a86863d104a3930b3a806935d92ddbf30"><div class="ttname"><a href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SVF::SMDiagnostic</a></div><div class="ttdeci">llvm::SMDiagnostic SMDiagnostic</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00088">BasicTypes.h:88</a></div></div>
@@ -4283,8 +4292,8 @@ Friends</h2></td></tr>
4283
4292
  <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#l00202">LLVMUtil.h:202</a></div></div>
4284
4293
  <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#l00679">SVFValue.h:679</a></div></div>
4285
4294
  <div class="ttc" id="anamespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00134">BasicTypes.h:134</a></div></div>
4286
- <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#l01196">LLVMModule.cpp:1196</a></div></div>
4287
- <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#l00165">LLVMModule.cpp:165</a></div></div>
4295
+ <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#l01204">LLVMModule.cpp:1204</a></div></div>
4296
+ <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>
4288
4297
  <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#l00086">LLVMModule.h:86</a></div></div>
4289
4298
  <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#l00670">SVFUtil.h:670</a></div></div>
4290
4299
  <div class="ttc" id="anamespaceSVF_html_a1c7c7ac12791c0ae386283c0a4f127ba"><div class="ttname"><a href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">SVF::raw_fd_ostream</a></div><div class="ttdeci">llvm::raw_fd_ostream raw_fd_ostream</div><div class="ttdoc">LLVM outputs.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00257">BasicTypes.h:257</a></div></div>
@@ -4299,16 +4308,16 @@ Friends</h2></td></tr>
4299
4308
  <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="SVFType_8h_source.html#l00106">SVFType.h:106</a></div></div>
4300
4309
  <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#l00213">Options.h:213</a></div></div>
4301
4310
  <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#l00145">LLVMModule.h:145</a></div></div>
4302
- <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#l00318">LLVMModule.cpp:318</a></div></div>
4311
+ <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#l00326">LLVMModule.cpp:326</a></div></div>
4303
4312
  <div class="ttc" id="anamespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00269">BasicTypes.h:269</a></div></div>
4304
4313
  <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html">SVF::SymbolTableBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00042">SymbolTableBuilder.h:42</a></div></div>
4305
- <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#l00945">LLVMModule.cpp:945</a></div></div>
4314
+ <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#l00953">LLVMModule.cpp:953</a></div></div>
4306
4315
  <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>
4307
4316
  <div class="ttc" id="aclassSVF_1_1SVFIntegerType_html"><div class="ttname"><a href="classSVF_1_1SVFIntegerType.html">SVF::SVFIntegerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00357">SVFType.h:357</a></div></div>
4308
4317
  <div class="ttc" id="aclassSVF_1_1SVFStat_html_ae89293bc063bdc74a988e9c37c70321e"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">SVF::SVFStat::timeOfBuildingSymbolTable</a></div><div class="ttdeci">static double timeOfBuildingSymbolTable</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00091">SVFStat.h:91</a></div></div>
4309
4318
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3d34fcdfc98add848a34fd5259c11eb2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">SVF::LLVMUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const Function * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00058">LLVMUtil.h:58</a></div></div>
4310
4319
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a3ddabbd763acaaca28cacbabe5bc7f3b"><div class="ttname"><a href="classSVF_1_1SVFType.html#a3ddabbd763acaaca28cacbabe5bc7f3b">SVF::SVFType::setPointerTo</a></div><div class="ttdeci">void setPointerTo(const SVFPointerType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00291">SVFType.h:291</a></div></div>
4311
- <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#l00992">LLVMModule.cpp:992</a></div></div>
4320
+ <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#l01000">LLVMModule.cpp:1000</a></div></div>
4312
4321
  <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#l00043">LLVMModule.h:43</a></div></div>
4313
4322
  <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">all formal arguments of this function</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00302">SVFValue.h:302</a></div></div>
4314
4323
  <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#l00209">LLVMModule.h:209</a></div></div>
@@ -4319,24 +4328,24 @@ Friends</h2></td></tr>
4319
4328
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9bd6f54920929e5ad35102ba2f2223da"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">SVF::LLVMUtil::getFunReachableBBs</a></div><div class="ttdeci">void getFunReachableBBs(const Function *svfFun, std::vector&lt; const SVFBasicBlock * &gt; &amp;bbs)</div><div class="ttdoc">Get reachable basic block from function entry.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00071">LLVMUtil.cpp:71</a></div></div>
4320
4329
  <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a38f8fdd93ef7222f408cbbb2a98a1cd5"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">SVF::SVFBasicBlock::addPredBasicBlock</a></div><div class="ttdeci">void addPredBasicBlock(const SVFBasicBlock *pred)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00518">SVFValue.h:518</a></div></div>
4321
4330
  <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#l00105">SVFValue.h:105</a></div></div>
4322
- <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#l00919">LLVMModule.cpp:919</a></div></div>
4331
+ <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#l00927">LLVMModule.cpp:927</a></div></div>
4323
4332
  <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>
4324
4333
  <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#l00306">LLVMUtil.cpp:306</a></div></div>
4325
4334
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a7b8b93fec1dc8c63c0a5837a85b99129"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a7b8b93fec1dc8c63c0a5837a85b99129">SVF::LLVMUtil::llvmToString</a></div><div class="ttdeci">std::string llvmToString(const T &amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00486">LLVMUtil.h:486</a></div></div>
4326
4335
  <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>
4327
4336
  <div class="ttc" id="aclassSVF_1_1StInfo_html_aae0736a5e99b11571af52e28500a6f9c"><div class="ttname"><a href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const SVFType *type, u32_t elemIdx)</div><div class="ttdoc">Add field index and element index and their corresponding type.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00008">SVFValue.cpp:8</a></div></div>
4328
- <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#l01058">LLVMModule.cpp:1058</a></div></div>
4329
- <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#l01115">LLVMModule.cpp:1115</a></div></div>
4337
+ <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#l01066">LLVMModule.cpp:1066</a></div></div>
4338
+ <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#l01123">LLVMModule.cpp:1123</a></div></div>
4330
4339
  <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#l00087">LLVMModule.h:87</a></div></div>
4331
4340
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4638a12f5481dff947b59cf8353e619b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">SVF::LLVMUtil::isIntrinsicFun</a></div><div class="ttdeci">bool isIntrinsicFun(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00192">LLVMUtil.cpp:192</a></div></div>
4332
- <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#l00456">LLVMModule.cpp:456</a></div></div>
4341
+ <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#l00464">LLVMModule.cpp:464</a></div></div>
4333
4342
  <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#l00866">SVFValue.h:866</a></div></div>
4334
4343
  <div class="ttc" id="anamespaceSVF_html_ad49e4222ba46d9490b87a80df8b46800"><div class="ttname"><a href="namespaceSVF.html#ad49e4222ba46d9490b87a80df8b46800">SVF::ConstantFP</a></div><div class="ttdeci">llvm::ConstantFP ConstantFP</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00124">BasicTypes.h:124</a></div></div>
4335
4344
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afbd60d5443c7fa1448813d00bb5d0fa7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &gt; &amp;instList)</div><div class="ttdoc">Get the next instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00277">LLVMUtil.cpp:277</a></div></div>
4336
4345
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a023ea6f179433fa4d007c98ddc38e3c5"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">SVF::LLVMModuleSet::addOtherValueMap</a></div><div class="ttdeci">void addOtherValueMap(const Value *ov, SVFOtherValue *svfov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00180">LLVMModule.h:180</a></div></div>
4337
4346
  <div class="ttc" id="aclassSVF_1_1SVFOtherType_html"><div class="ttname"><a href="classSVF_1_1SVFOtherType.html">SVF::SVFOtherType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00476">SVFType.h:476</a></div></div>
4338
4347
  <div class="ttc" id="aSVFType_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DBUG model of each pass.</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00549">SVFType.h:549</a></div></div>
4339
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a024f5de163fde6f63cb2d762b4b28d8a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">SVF::LLVMModuleSet::createSVFFunction</a></div><div class="ttdeci">void createSVFFunction(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00239">LLVMModule.cpp:239</a></div></div>
4348
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a024f5de163fde6f63cb2d762b4b28d8a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">SVF::LLVMModuleSet::createSVFFunction</a></div><div class="ttdeci">void createSVFFunction(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00247">LLVMModule.cpp:247</a></div></div>
4340
4349
  <div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00595">SVFValue.h:595</a></div></div>
4341
4350
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_a48d7f0643bb228701dcabb88ef541fca"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a48d7f0643bb228701dcabb88ef541fca">SVF::SVFModule::addOtherValue</a></div><div class="ttdeci">void addOtherValue(SVFOtherValue *ov)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00125">SVFModule.h:125</a></div></div>
4342
4351
  <div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_acc409e328f641a2c9512beeb727f58c7"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">SVF::SVFLoopAndDomInfo::setReachableBBs</a></div><div class="ttdeci">void setReachableBBs(BBList &amp;bbs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00136">SVFValue.h:136</a></div></div>
@@ -4357,7 +4366,7 @@ Friends</h2></td></tr>
4357
4366
  <div class="ttc" id="anamespaceSVF_html_aacffd97ab4cb45aeae2e67ec479889aa"><div class="ttname"><a href="namespaceSVF.html#aacffd97ab4cb45aeae2e67ec479889aa">SVF::GlobalIFunc</a></div><div class="ttdeci">llvm::GlobalIFunc GlobalIFunc</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00127">BasicTypes.h:127</a></div></div>
4358
4367
  <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#l00089">SVFModule.h:89</a></div></div>
4359
4368
  <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#l00069">LLVMModule.cpp:69</a></div></div>
4360
- <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#l00336">LLVMModule.cpp:336</a></div></div>
4369
+ <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#l00344">LLVMModule.cpp:344</a></div></div>
4361
4370
  <!-- start footer part -->
4362
4371
  <hr class="footer"/><address class="footer"><small>
4363
4372
  Generated by &#160;<a href="http://www.doxygen.org/index.html">