svf-tools 1.0.627 → 1.0.628
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dockerfile +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +49 -48
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +63 -61
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +11 -10
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +235 -218
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +54 -54
- package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +19 -19
- package/SVF-doxygen/html/html/functions_c.html +1 -1
- package/SVF-doxygen/html/html/functions_func_c.html +1 -1
- package/SVF-doxygen/html/html/functions_func_n.html +1 -1
- package/SVF-doxygen/html/html/functions_i.html +6 -6
- package/SVF-doxygen/html/html/functions_l.html +5 -5
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_n.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +3 -5
- package/SVF-doxygen/html/html/functions_p.html +20 -20
- package/SVF-doxygen/html/html/functions_s.html +19 -16
- package/SVF-doxygen/html/html/functions_t.html +1 -1
- package/SVF-doxygen/html/html/functions_type_t.html +1 -1
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
- package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/search/all_10.js +8 -8
- package/SVF-doxygen/html/html/search/all_12.js +6 -5
- package/SVF-doxygen/html/html/search/all_13.js +3 -3
- package/SVF-doxygen/html/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +1 -1
- package/SVF-doxygen/html/html/search/all_9.js +2 -2
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +5 -5
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +3 -3
- package/SVF-doxygen/html/html/search/all_f.js +2 -2
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_2.js +1 -1
- package/SVF-doxygen/html/html/search/functions_d.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
- package/SVF-doxygen/html/html/search/variables_12.js +1 -0
- package/SVF-doxygen/html/html/search/variables_13.js +2 -2
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +3 -3
- package/include/SVF-LLVM/LLVMModule.h +3 -2
- package/lib/SVF-LLVM/LLVMModule.cpp +11 -18
- package/package.json +1 -1
|
@@ -103,8 +103,8 @@ Public Types</h2></td></tr>
|
|
|
103
103
|
<tr class="separator:aa872d7a6b6bf3ec944bd9077de51b259"><td class="memSeparator" colspan="2"> </td></tr>
|
|
104
104
|
<tr class="memitem:af070cf782594a939c4a0a6de9a724a69"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *, <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#af070cf782594a939c4a0a6de9a724a69">LLVMType2SVFTypeMap</a></td></tr>
|
|
105
105
|
<tr class="separator:af070cf782594a939c4a0a6de9a724a69"><td class="memSeparator" colspan="2"> </td></tr>
|
|
106
|
-
<tr class="memitem:
|
|
107
|
-
<tr class="separator:
|
|
106
|
+
<tr class="memitem:a3c2eb10a20604bf794d2d10f2cffb116"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *, <a class="el" href="classSVF_1_1StInfo.html">StInfo</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#a3c2eb10a20604bf794d2d10f2cffb116">Type2TypeInfoMap</a></td></tr>
|
|
107
|
+
<tr class="separator:a3c2eb10a20604bf794d2d10f2cffb116"><td class="memSeparator" colspan="2"> </td></tr>
|
|
108
108
|
</table><table class="memberdecls">
|
|
109
109
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
|
110
110
|
Public Member Functions</h2></td></tr>
|
|
@@ -219,9 +219,9 @@ Private Member Functions</h2></td></tr>
|
|
|
219
219
|
<tr class="memitem:aa8de934358332505d4805db137d8ec29"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1StInfo.html">StInfo</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a> (const <a class="el" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a> *T)</td></tr>
|
|
220
220
|
<tr class="memdesc:aa8de934358332505d4805db137d8ec29"><td class="mdescLeft"> </td><td class="mdescRight">Collect the array info. <a href="#aa8de934358332505d4805db137d8ec29">More...</a><br /></td></tr>
|
|
221
221
|
<tr class="separator:aa8de934358332505d4805db137d8ec29"><td class="memSeparator" colspan="2"> </td></tr>
|
|
222
|
-
<tr class="memitem:
|
|
223
|
-
<tr class="memdesc:
|
|
224
|
-
<tr class="separator:
|
|
222
|
+
<tr class="memitem:a52853bd34a394882c6fd0fc73739c9f2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1StInfo.html">StInfo</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</td></tr>
|
|
223
|
+
<tr class="memdesc:a52853bd34a394882c6fd0fc73739c9f2"><td class="mdescLeft"> </td><td class="mdescRight">Collect simple type (non-aggregate) info. <a href="#a52853bd34a394882c6fd0fc73739c9f2">More...</a><br /></td></tr>
|
|
224
|
+
<tr class="separator:a52853bd34a394882c6fd0fc73739c9f2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
225
225
|
<tr class="memitem:aa1250575db489dc57583b3641fd78b88"><td class="memItemLeft" align="right" valign="top">std::vector< const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#aa1250575db489dc57583b3641fd78b88">getLLVMGlobalFunctions</a> (const <a class="el" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *global)</td></tr>
|
|
226
226
|
<tr class="separator:aa1250575db489dc57583b3641fd78b88"><td class="memSeparator" colspan="2"> </td></tr>
|
|
227
227
|
<tr class="memitem:a298966366b02d0a34f409c2c77da3789"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a> (const std::vector< <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> > &moduleNameVec)</td></tr>
|
|
@@ -286,8 +286,10 @@ Private Attributes</h2></td></tr>
|
|
|
286
286
|
<tr class="separator:a7f8e61cf5d838d7a2e862bc6955f16be"><td class="memSeparator" colspan="2"> </td></tr>
|
|
287
287
|
<tr class="memitem:a067661e0049314779a44c9600420820f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1LLVMModuleSet.html#af070cf782594a939c4a0a6de9a724a69">LLVMType2SVFTypeMap</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a></td></tr>
|
|
288
288
|
<tr class="separator:a067661e0049314779a44c9600420820f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
289
|
-
<tr class="memitem:af2c555af91679d9e6d3009547ee11486"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1LLVMModuleSet.html#
|
|
289
|
+
<tr class="memitem:af2c555af91679d9e6d3009547ee11486"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1LLVMModuleSet.html#a3c2eb10a20604bf794d2d10f2cffb116">Type2TypeInfoMap</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a></td></tr>
|
|
290
290
|
<tr class="separator:af2c555af91679d9e6d3009547ee11486"><td class="memSeparator" colspan="2"> </td></tr>
|
|
291
|
+
<tr class="memitem:ad13302dd3e5585e8feba4b0cb31991a2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< const <a class="el" href="classSVF_1_1StInfo.html">StInfo</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#ad13302dd3e5585e8feba4b0cb31991a2">StInfos</a></td></tr>
|
|
292
|
+
<tr class="separator:ad13302dd3e5585e8feba4b0cb31991a2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
291
293
|
<tr class="memitem:a14b0b55d397d6f8a5dfe3b574021f801"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1LLVMModuleSet.html#a14b0b55d397d6f8a5dfe3b574021f801">preProcessed</a></td></tr>
|
|
292
294
|
<tr class="separator:a14b0b55d397d6f8a5dfe3b574021f801"><td class="memSeparator" colspan="2"> </td></tr>
|
|
293
295
|
</table><table class="memberdecls">
|
|
@@ -492,14 +494,14 @@ Static Private Attributes</h2></td></tr>
|
|
|
492
494
|
|
|
493
495
|
</div>
|
|
494
496
|
</div>
|
|
495
|
-
<a id="
|
|
496
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
497
|
+
<a id="a3c2eb10a20604bf794d2d10f2cffb116"></a>
|
|
498
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a3c2eb10a20604bf794d2d10f2cffb116">◆ </a></span>Type2TypeInfoMap</h2>
|
|
497
499
|
|
|
498
500
|
<div class="memitem">
|
|
499
501
|
<div class="memproto">
|
|
500
502
|
<table class="memname">
|
|
501
503
|
<tr>
|
|
502
|
-
<td class="memname">typedef <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>*,
|
|
504
|
+
<td class="memname">typedef <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>*, <a class="el" href="classSVF_1_1StInfo.html">StInfo</a>*> <a class="el" href="classSVF_1_1LLVMModuleSet.html#a3c2eb10a20604bf794d2d10f2cffb116">SVF::LLVMModuleSet::Type2TypeInfoMap</a></td>
|
|
503
505
|
</tr>
|
|
504
506
|
</table>
|
|
505
507
|
</div><div class="memdoc">
|
|
@@ -537,7 +539,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
537
539
|
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00074">74</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
538
540
|
<div class="fragment"><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a14b0b55d397d6f8a5dfe3b574021f801">preProcessed</a>(<span class="keyword">false</span>)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a> = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> }</div><div class="ttc" id="classSVF_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>
|
|
539
541
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ad06a92bf8bc556de742e0ffdf79ffafe"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">SVF::LLVMModuleSet::cxts</a></div><div class="ttdeci">std::unique_ptr< LLVMContext > cxts</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00067">LLVMModule.h:67</a></div></div>
|
|
540
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a14b0b55d397d6f8a5dfe3b574021f801"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a14b0b55d397d6f8a5dfe3b574021f801">SVF::LLVMModuleSet::preProcessed</a></div><div class="ttdeci">bool preProcessed</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#
|
|
542
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a14b0b55d397d6f8a5dfe3b574021f801"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a14b0b55d397d6f8a5dfe3b574021f801">SVF::LLVMModuleSet::preProcessed</a></div><div class="ttdeci">bool preProcessed</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00354">LLVMModule.h:354</a></div></div>
|
|
541
543
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5552135a27684cbe4d2a5ed346f64644"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">SVF::LLVMModuleSet::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00065">LLVMModule.h:65</a></div></div>
|
|
542
544
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3e14bbb3ae0acc74775ac3233a84d379"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">std::unique_ptr< SVFModule > svfModule</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00066">LLVMModule.h:66</a></div></div>
|
|
543
545
|
</div><!-- fragment -->
|
|
@@ -567,7 +569,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
567
569
|
</div><div class="memdoc">
|
|
568
570
|
|
|
569
571
|
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00079">79</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
570
|
-
<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> 
|
|
572
|
+
<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> *it: <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad13302dd3e5585e8feba4b0cb31991a2">StInfos</a>)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">delete</span>(it);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ad13302dd3e5585e8feba4b0cb31991a2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad13302dd3e5585e8feba4b0cb31991a2">SVF::LLVMModuleSet::StInfos</a></div><div class="ttdeci">Set< const StInfo * > StInfos</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00087">LLVMModule.h:87</a></div></div>
|
|
573
|
+
</div><!-- fragment -->
|
|
571
574
|
</div>
|
|
572
575
|
</div>
|
|
573
576
|
<h2 class="groupheader">Member Function Documentation</h2>
|
|
@@ -605,9 +608,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
605
608
|
</table>
|
|
606
609
|
</div><div class="memdoc">
|
|
607
610
|
|
|
608
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
609
|
-
<div class="fragment"><div class="line"><a name="
|
|
610
|
-
<div class="ttc" id="classSVF_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#
|
|
611
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00160">160</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
612
|
+
<div class="fragment"><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a852524c71831d7b2da0e9b0b6b191480">LLVMArgument2SVFArgument</a>[arg] = svfArg;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">setValueAttr</a>(arg,svfArg);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a852524c71831d7b2da0e9b0b6b191480"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a852524c71831d7b2da0e9b0b6b191480">SVF::LLVMModuleSet::LLVMArgument2SVFArgument</a></div><div class="ttdeci">LLVMArgument2SVFArgumentMap LLVMArgument2SVFArgument</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00081">LLVMModule.h:81</a></div></div>
|
|
613
|
+
<div class="ttc" id="classSVF_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#l00847">LLVMModule.cpp:847</a></div></div>
|
|
611
614
|
</div><!-- fragment -->
|
|
612
615
|
</div>
|
|
613
616
|
</div>
|
|
@@ -645,9 +648,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
645
648
|
</table>
|
|
646
649
|
</div><div class="memdoc">
|
|
647
650
|
|
|
648
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
649
|
-
<div class="fragment"><div class="line"><a name="
|
|
650
|
-
<div class="ttc" id="classSVF_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#
|
|
651
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00150">150</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
652
|
+
<div class="fragment"><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0f9b36699b99dfcfe3c1588bfab6b97c">LLVMBB2SVFBB</a>[bb] = svfBB;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">setValueAttr</a>(bb,svfBB);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="ttc" id="classSVF_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#l00079">LLVMModule.h:79</a></div></div>
|
|
653
|
+
<div class="ttc" id="classSVF_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#l00847">LLVMModule.cpp:847</a></div></div>
|
|
651
654
|
</div><!-- fragment -->
|
|
652
655
|
</div>
|
|
653
656
|
</div>
|
|
@@ -685,9 +688,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
685
688
|
</table>
|
|
686
689
|
</div><div class="memdoc">
|
|
687
690
|
|
|
688
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
689
|
-
<div class="fragment"><div class="line"><a name="
|
|
690
|
-
<div class="ttc" id="classSVF_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#
|
|
691
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00170">170</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
692
|
+
<div class="fragment"><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>[cd] = svfcd;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">setValueAttr</a>(cd,svfcd);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="ttc" id="classSVF_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#l00082">LLVMModule.h:82</a></div></div>
|
|
693
|
+
<div class="ttc" id="classSVF_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#l00847">LLVMModule.cpp:847</a></div></div>
|
|
691
694
|
</div><!-- fragment -->
|
|
692
695
|
</div>
|
|
693
696
|
</div>
|
|
@@ -725,9 +728,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
725
728
|
</table>
|
|
726
729
|
</div><div class="memdoc">
|
|
727
730
|
|
|
728
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
729
|
-
<div class="fragment"><div class="line"><a name="
|
|
730
|
-
<div class="ttc" id="classSVF_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#
|
|
731
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00145">145</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
732
|
+
<div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fd7f0170bffa7c1b927cdb0de98fd15">LLVMFunc2SVFFunc</a>[func] = svfFunc;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">setValueAttr</a>(func,svfFunc);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="ttc" id="classSVF_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#l00078">LLVMModule.h:78</a></div></div>
|
|
733
|
+
<div class="ttc" id="classSVF_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#l00847">LLVMModule.cpp:847</a></div></div>
|
|
731
734
|
</div><!-- fragment -->
|
|
732
735
|
</div>
|
|
733
736
|
</div>
|
|
@@ -765,9 +768,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
765
768
|
</table>
|
|
766
769
|
</div><div class="memdoc">
|
|
767
770
|
|
|
768
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
769
|
-
<div class="fragment"><div class="line"><a name="
|
|
770
|
-
<div class="ttc" id="classSVF_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#
|
|
771
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00165">165</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
772
|
+
<div class="fragment"><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>[glob] = svfglob;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">setValueAttr</a>(glob,svfglob);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="ttc" id="classSVF_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#l00082">LLVMModule.h:82</a></div></div>
|
|
773
|
+
<div class="ttc" id="classSVF_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#l00847">LLVMModule.cpp:847</a></div></div>
|
|
771
774
|
</div><!-- fragment -->
|
|
772
775
|
</div>
|
|
773
776
|
</div>
|
|
@@ -805,9 +808,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
805
808
|
</table>
|
|
806
809
|
</div><div class="memdoc">
|
|
807
810
|
|
|
808
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
809
|
-
<div class="fragment"><div class="line"><a name="
|
|
810
|
-
<div class="ttc" id="classSVF_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#
|
|
811
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00155">155</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
812
|
+
<div class="fragment"><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a42439790c217254ce5404622b197b3d0">LLVMInst2SVFInst</a>[inst] = svfInst;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">setValueAttr</a>(inst,svfInst);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="ttc" id="classSVF_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#l00080">LLVMModule.h:80</a></div></div>
|
|
813
|
+
<div class="ttc" id="classSVF_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#l00847">LLVMModule.cpp:847</a></div></div>
|
|
811
814
|
</div><!-- fragment -->
|
|
812
815
|
</div>
|
|
813
816
|
</div>
|
|
@@ -845,9 +848,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
845
848
|
</table>
|
|
846
849
|
</div><div class="memdoc">
|
|
847
850
|
|
|
848
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
849
|
-
<div class="fragment"><div class="line"><a name="
|
|
850
|
-
<div class="ttc" id="classSVF_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#
|
|
851
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00175">175</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
852
|
+
<div class="fragment"><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>[cons] = svfcons;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">setValueAttr</a>(cons,svfcons);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="ttc" id="classSVF_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#l00082">LLVMModule.h:82</a></div></div>
|
|
853
|
+
<div class="ttc" id="classSVF_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#l00847">LLVMModule.cpp:847</a></div></div>
|
|
851
854
|
</div><!-- fragment -->
|
|
852
855
|
</div>
|
|
853
856
|
</div>
|
|
@@ -885,9 +888,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
885
888
|
</table>
|
|
886
889
|
</div><div class="memdoc">
|
|
887
890
|
|
|
888
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
889
|
-
<div class="fragment"><div class="line"><a name="
|
|
890
|
-
<div class="ttc" id="classSVF_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#
|
|
891
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00180">180</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
892
|
+
<div class="fragment"><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>[ov] = svfov;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">setValueAttr</a>(ov,svfov);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div><div class="ttc" id="classSVF_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#l00083">LLVMModule.h:83</a></div></div>
|
|
893
|
+
<div class="ttc" id="classSVF_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#l00847">LLVMModule.cpp:847</a></div></div>
|
|
891
894
|
</div><!-- fragment -->
|
|
892
895
|
</div>
|
|
893
896
|
</div>
|
|
@@ -914,18 +917,18 @@ Static Private Attributes</h2></td></tr>
|
|
|
914
917
|
</table>
|
|
915
918
|
</div><div class="memdoc">
|
|
916
919
|
|
|
917
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
918
|
-
<div class="fragment"><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  std::vector<const Function* > ctor_funcs;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  std::vector<const Function* > dtor_funcs;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* orgMain = 0;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mainMod = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> </div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="comment">// Collect ctor and dtor functions</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">for</span> (Module::global_iterator it = mod.global_begin(), eit = mod.global_end(); it != eit; ++it)</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *global = &*it;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> </div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">if</span> (global->getName().equals(<a class="code" href="LLVMModule_8cpp.html#aa18802f2f60ef8030c66a42f20f285af">SVF_GLOBAL_CTORS</a>) &&</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  global->hasInitializer())</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa1250575db489dc57583b3641fd78b88">getLLVMGlobalFunctions</a>(global);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  }</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (global->getName().equals(<a class="code" href="LLVMModule_8cpp.html#a9fd6e28e6ed93f65a20a348ab0646320">SVF_GLOBAL_DTORS</a>) &&</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  global->hasInitializer())</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa1250575db489dc57583b3641fd78b88">getLLVMGlobalFunctions</a>(global);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="comment">// Find main function</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> &func : mod)</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">if</span> (func.getName().equals(<a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>))</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  assert(<span class="keyword">false</span> && <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a> <span class="stringliteral">" already defined"</span>);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">if</span>(func.getName().equals(<span class="stringliteral">"main"</span>))</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  orgMain = &func;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  mainMod = &mod;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  }</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> </div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="comment">// Only create svf.main when the original main function is found, and also</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="comment">// there are global contructor or destructor functions.</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">if</span> (orgMain && <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() > 0 &&</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  (ctor_funcs.size() > 0 || dtor_funcs.size() > 0))</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  assert(mainMod && <span class="stringliteral">"Module with main function not found."</span>);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> & M = *mainMod;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="comment">// char **</span></div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i8ptr2 = PointerType::getInt8PtrTy(M.getContext())->getPointerTo();</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i32 = IntegerType::getInt32Ty(M.getContext());</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="comment">// define void @svf.main(i32, i8**, i8**)</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> <span class="preprocessor">#if (LLVM_VERSION_MAJOR >= 9)</span></div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  FunctionCallee svfmainFn = M.getOrInsertFunction(</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  Type::getVoidTy(M.getContext()),</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  i32,i8ptr2,i8ptr2</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  );</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>>(svfmainFn.getCallee());</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>>(M.getOrInsertFunction(</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  Type::getVoidTy(M.getContext()),</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  i32,i8ptr2,i8ptr2</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  ));</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  svfmain->setCallingConv(llvm::CallingConv::C);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* block = BasicBlock::Create(M.getContext(), <span class="stringliteral">"entry"</span>, svfmain);</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <a class="code" href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">IRBuilder</a> Builder(block);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="comment">// emit "call void @ctor()". ctor_funcs is sorted so the functions are</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="comment">// emitted in the order of priority</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> & ctor: ctor_funcs)</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  {</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keyword">auto</span> target = M.getOrInsertFunction(</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  ctor->getName(),</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  Type::getVoidTy(M.getContext())</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  );</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  Builder.CreateCall(target);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  }</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="comment">// main() should be called after all ctor functions and before dtor</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="comment">// functions.</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  Function::arg_iterator arg_it = svfmain->arg_begin();</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* args[] = {arg_it, arg_it + 1, arg_it + 2 };</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordtype">size_t</span> cnt = orgMain->arg_size();</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  assert(cnt <= 3 && <span class="stringliteral">"Too many arguments for main()"</span>);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  Builder.CreateCall(orgMain, llvm::ArrayRef<Value*>(args,args + cnt));</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="comment">// emit "call void @dtor()". dtor_funcs is sorted so the functions are</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="comment">// emitted in the order of priority</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> &dtor : dtor_funcs)</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  {</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keyword">auto</span> target = M.getOrInsertFunction(</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  dtor->getName(),</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  Type::getVoidTy(M.getContext())</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  );</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  Builder.CreateCall(target);</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  }</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="comment">// return;</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  Builder.CreateRetVoid();</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  }</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> }</div><div class="ttc" id="namespaceSVF_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#l00060">BasicTypes.h:60</a></div></div>
|
|
920
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00553">553</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
921
|
+
<div class="fragment"><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  std::vector<const Function* > ctor_funcs;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  std::vector<const Function* > dtor_funcs;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* orgMain = 0;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mainMod = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="comment">// Collect ctor and dtor functions</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">for</span> (Module::global_iterator it = mod.global_begin(), eit = mod.global_end(); it != eit; ++it)</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *global = &*it;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">if</span> (global->getName().equals(<a class="code" href="LLVMModule_8cpp.html#aa18802f2f60ef8030c66a42f20f285af">SVF_GLOBAL_CTORS</a>) &&</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  global->hasInitializer())</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa1250575db489dc57583b3641fd78b88">getLLVMGlobalFunctions</a>(global);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (global->getName().equals(<a class="code" href="LLVMModule_8cpp.html#a9fd6e28e6ed93f65a20a348ab0646320">SVF_GLOBAL_DTORS</a>) &&</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  global->hasInitializer())</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa1250575db489dc57583b3641fd78b88">getLLVMGlobalFunctions</a>(global);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  }</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span> </div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="comment">// Find main function</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> &func : mod)</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keywordflow">if</span> (func.getName().equals(<a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>))</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  assert(<span class="keyword">false</span> && <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a> <span class="stringliteral">" already defined"</span>);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">if</span>(func.getName().equals(<span class="stringliteral">"main"</span>))</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  orgMain = &func;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  mainMod = &mod;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  }</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  }</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="comment">// Only create svf.main when the original main function is found, and also</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="comment">// there are global contructor or destructor functions.</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">if</span> (orgMain && <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() > 0 &&</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  (ctor_funcs.size() > 0 || dtor_funcs.size() > 0))</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  {</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  assert(mainMod && <span class="stringliteral">"Module with main function not found."</span>);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> & M = *mainMod;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="comment">// char **</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i8ptr2 = PointerType::getInt8PtrTy(M.getContext())->getPointerTo();</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i32 = IntegerType::getInt32Ty(M.getContext());</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="comment">// define void @svf.main(i32, i8**, i8**)</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> <span class="preprocessor">#if (LLVM_VERSION_MAJOR >= 9)</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  FunctionCallee svfmainFn = M.getOrInsertFunction(</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  Type::getVoidTy(M.getContext()),</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  i32,i8ptr2,i8ptr2</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  );</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>>(svfmainFn.getCallee());</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>>(M.getOrInsertFunction(</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  Type::getVoidTy(M.getContext()),</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  i32,i8ptr2,i8ptr2</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  ));</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  svfmain->setCallingConv(llvm::CallingConv::C);</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* block = BasicBlock::Create(M.getContext(), <span class="stringliteral">"entry"</span>, svfmain);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <a class="code" href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">IRBuilder</a> Builder(block);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="comment">// emit "call void @ctor()". ctor_funcs is sorted so the functions are</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="comment">// emitted in the order of priority</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> & ctor: ctor_funcs)</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keyword">auto</span> target = M.getOrInsertFunction(</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  ctor->getName(),</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  Type::getVoidTy(M.getContext())</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  );</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  Builder.CreateCall(target);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="comment">// main() should be called after all ctor functions and before dtor</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="comment">// functions.</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  Function::arg_iterator arg_it = svfmain->arg_begin();</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* args[] = {arg_it, arg_it + 1, arg_it + 2 };</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keywordtype">size_t</span> cnt = orgMain->arg_size();</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  assert(cnt <= 3 && <span class="stringliteral">"Too many arguments for main()"</span>);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  Builder.CreateCall(orgMain, llvm::ArrayRef<Value*>(args,args + cnt));</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="comment">// emit "call void @dtor()". dtor_funcs is sorted so the functions are</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="comment">// emitted in the order of priority</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> &dtor : dtor_funcs)</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keyword">auto</span> target = M.getOrInsertFunction(</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  dtor->getName(),</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  Type::getVoidTy(M.getContext())</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  );</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  Builder.CreateCall(target);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  }</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="comment">// return;</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  Builder.CreateRetVoid();</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  }</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span> }</div><div class="ttc" id="namespaceSVF_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#l00060">BasicTypes.h:60</a></div></div>
|
|
919
922
|
<div class="ttc" id="namespaceSVF_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#l00062">BasicTypes.h:62</a></div></div>
|
|
920
923
|
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00059">BasicTypes.h:59</a></div></div>
|
|
921
924
|
<div class="ttc" id="namespaceSVF_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#l00105">BasicTypes.h:105</a></div></div>
|
|
922
925
|
<div class="ttc" id="LLVMModule_8cpp_html_a9fd6e28e6ed93f65a20a348ab0646320"><div class="ttname"><a href="LLVMModule_8cpp.html#a9fd6e28e6ed93f65a20a348ab0646320">SVF_GLOBAL_DTORS</a></div><div class="ttdeci">#define SVF_GLOBAL_DTORS</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00069">LLVMModule.cpp:69</a></div></div>
|
|
923
926
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type > dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00405">Casting.h:405</a></div></div>
|
|
924
|
-
<div class="ttc" id="classSVF_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#
|
|
927
|
+
<div class="ttc" id="classSVF_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>
|
|
925
928
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
|
|
926
929
|
<div class="ttc" id="namespaceSVF_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#l00050">BasicTypes.h:50</a></div></div>
|
|
927
930
|
<div class="ttc" id="LLVMModule_8cpp_html_aa18802f2f60ef8030c66a42f20f285af"><div class="ttname"><a href="LLVMModule_8cpp.html#aa18802f2f60ef8030c66a42f20f285af">SVF_GLOBAL_CTORS</a></div><div class="ttdeci">#define SVF_GLOBAL_CTORS</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00068">LLVMModule.cpp:68</a></div></div>
|
|
928
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_aa1250575db489dc57583b3641fd78b88"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa1250575db489dc57583b3641fd78b88">SVF::LLVMModuleSet::getLLVMGlobalFunctions</a></div><div class="ttdeci">std::vector< const Function * > getLLVMGlobalFunctions(const GlobalVariable *global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
931
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_aa1250575db489dc57583b3641fd78b88"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa1250575db489dc57583b3641fd78b88">SVF::LLVMModuleSet::getLLVMGlobalFunctions</a></div><div class="ttdeci">std::vector< const Function * > getLLVMGlobalFunctions(const GlobalVariable *global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00464">LLVMModule.cpp:464</a></div></div>
|
|
929
932
|
<div class="ttc" id="LLVMModule_8cpp_html_a10ab7c7da3a458495d8528b9e90d714b"><div class="ttname"><a href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a></div><div class="ttdeci">#define SVF_MAIN_FUNC_NAME</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00067">LLVMModule.cpp:67</a></div></div>
|
|
930
933
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acde6292e719c80f93d3d1c344ab442cd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">SVF::LLVMModuleSet::modules</a></div><div class="ttdeci">std::vector< std::reference_wrapper< Module > > modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
931
934
|
<div class="ttc" id="namespaceSVF_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#l00058">BasicTypes.h:58</a></div></div>
|
|
@@ -958,8 +961,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
958
961
|
|
|
959
962
|
<p>Create SVFTypes. </p>
|
|
960
963
|
|
|
961
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
962
|
-
<div class="fragment"><div class="line"><a name="
|
|
964
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01032">1032</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
965
|
+
<div class="fragment"><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> {</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  assert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T)==<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end() && <span class="stringliteral">"SVFType has been added before"</span>);</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> </div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pt = SVFUtil::dyn_cast<PointerType>(T))</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(pt)));</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<IntegerType>(T))</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIntergerType.html">SVFIntergerType</a>();</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* ft = SVFUtil::dyn_cast<FunctionType>(T))</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunctionType.html">SVFFunctionType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ft->getReturnType()));</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<StructType>(T))</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>();</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ArrayType>(T))</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>();</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherType.html">SVFOtherType</a>(T->isSingleValueType());</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">addTypeInfo</a>(svftype);</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keywordflow">return</span> svftype;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> }</div><div class="ttc" id="namespaceSVF_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#l00074">BasicTypes.h:74</a></div></div>
|
|
963
966
|
<div class="ttc" id="classSVF_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#l00323">SymbolTableInfo.h:323</a></div></div>
|
|
964
967
|
<div class="ttc" id="namespaceSVF_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#l00072">BasicTypes.h:72</a></div></div>
|
|
965
968
|
<div class="ttc" id="classSVF_1_1SVFFunctionType_html"><div class="ttname"><a href="classSVF_1_1SVFFunctionType.html">SVF::SVFFunctionType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00345">SVFType.h:345</a></div></div>
|
|
@@ -969,7 +972,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
969
972
|
<div class="ttc" id="classSVF_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#l00376">SVFType.h:376</a></div></div>
|
|
970
973
|
<div class="ttc" id="classSVF_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#l00233">SVFType.h:233</a></div></div>
|
|
971
974
|
<div class="ttc" id="classSVF_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#l00085">LLVMModule.h:85</a></div></div>
|
|
972
|
-
<div class="ttc" id="classSVF_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#
|
|
975
|
+
<div class="ttc" id="classSVF_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#l00982">LLVMModule.cpp:982</a></div></div>
|
|
973
976
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00121">LLVMUtil.h:121</a></div></div>
|
|
974
977
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5552135a27684cbe4d2a5ed346f64644"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">SVF::LLVMModuleSet::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00065">LLVMModule.h:65</a></div></div>
|
|
975
978
|
<div class="ttc" id="classSVF_1_1SVFStructType_html"><div class="ttname"><a href="classSVF_1_1SVFStructType.html">SVF::SVFStructType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00364">SVFType.h:364</a></div></div>
|
|
@@ -999,15 +1002,15 @@ Static Private Attributes</h2></td></tr>
|
|
|
999
1002
|
</table>
|
|
1000
1003
|
</div><div class="memdoc">
|
|
1001
1004
|
|
|
1002
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1003
|
-
<div class="fragment"><div class="line"><a name="
|
|
1004
|
-
<div class="ttc" id="classSVF_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#
|
|
1005
|
-
<div class="ttc" id="classSVF_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#
|
|
1006
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a14b0b55d397d6f8a5dfe3b574021f801"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a14b0b55d397d6f8a5dfe3b574021f801">SVF::LLVMModuleSet::preProcessed</a></div><div class="ttdeci">bool preProcessed</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#
|
|
1005
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00138">138</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1006
|
+
<div class="fragment"><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a14b0b55d397d6f8a5dfe3b574021f801">preProcessed</a>==<span class="keyword">false</span>)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac7c646a78c989807c52263fc35fb3628">buildFunToFunMap</a>();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#aaab03cb6ff665bc008c67b866ba81e47">buildGlobalDefToRepMap</a>();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3a718b0a27c2d13878c0718af97ad73d">Options::SVFMain</a>())</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8af6b911b728713f66f7c809d5c0fbf1">addSVFMain</a>();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4ca8c4678a7fefe26372fc1f4b2880fd">createSVFDataStructure</a>();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac6a5540354696f4c9170e0a5832ba70e">initSVFFunction</a>();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div><div class="ttc" id="classSVF_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#l00768">LLVMModule.cpp:768</a></div></div>
|
|
1007
|
+
<div class="ttc" id="classSVF_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#l00153">LLVMModule.cpp:153</a></div></div>
|
|
1008
|
+
<div class="ttc" id="classSVF_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#l00553">LLVMModule.cpp:553</a></div></div>
|
|
1009
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a14b0b55d397d6f8a5dfe3b574021f801"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a14b0b55d397d6f8a5dfe3b574021f801">SVF::LLVMModuleSet::preProcessed</a></div><div class="ttdeci">bool preProcessed</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00354">LLVMModule.h:354</a></div></div>
|
|
1007
1010
|
<div class="ttc" id="classSVF_1_1Options_html_a3a718b0a27c2d13878c0718af97ad73d"><div class="ttname"><a href="classSVF_1_1Options.html#a3a718b0a27c2d13878c0718af97ad73d">SVF::Options::SVFMain</a></div><div class="ttdeci">static const Option< bool > SVFMain</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00212">Options.h:212</a></div></div>
|
|
1008
|
-
<div class="ttc" id="classSVF_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#
|
|
1009
|
-
<div class="ttc" id="classSVF_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#
|
|
1010
|
-
<div class="ttc" id="classSVF_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#
|
|
1011
|
+
<div class="ttc" id="classSVF_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#l00365">LLVMModule.cpp:365</a></div></div>
|
|
1012
|
+
<div class="ttc" id="classSVF_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#l00653">LLVMModule.cpp:653</a></div></div>
|
|
1013
|
+
<div class="ttc" id="classSVF_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#l00224">LLVMModule.cpp:224</a></div></div>
|
|
1011
1014
|
</div><!-- fragment -->
|
|
1012
1015
|
</div>
|
|
1013
1016
|
</div>
|
|
@@ -1035,8 +1038,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1035
1038
|
</div><div class="memdoc">
|
|
1036
1039
|
<p>building symbol table </p>
|
|
1037
1040
|
|
|
1038
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1039
|
-
<div class="fragment"><div class="line"><a name="
|
|
1041
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00124">124</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1042
|
+
<div class="fragment"><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">double</span> startSymInfoTime = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <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>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<span class="stringliteral">"Building Symbol table ...\n"</span>));</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html">SymbolTableBuilder</a> builder(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  builder.buildMemModel(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>.get());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordtype">double</span> endSymInfoTime = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">SVFStat::timeOfBuildingSymbolTable</a> = (endSymInfoTime - startSymInfoTime)/<a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> }</div><div class="ttc" id="classSVF_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>
|
|
1040
1043
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00098">SVFUtil.cpp:98</a></div></div>
|
|
1041
1044
|
<div class="ttc" id="SVFType_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00422">SVFType.h:422</a></div></div>
|
|
1042
1045
|
<div class="ttc" id="SVFType_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#l00444">SVFType.h:444</a></div></div>
|
|
@@ -1076,8 +1079,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1076
1079
|
<p>Fun decl –> def</p>
|
|
1077
1080
|
<p>Fun def –> decls </p>
|
|
1078
1081
|
|
|
1079
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1080
|
-
<div class="fragment"><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*></a> funDecls, funDefs;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet<string></a> declNames, defNames, intersectNames;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<string, const Function*></a> NameToFunDefMapTy;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<string, Set<const Function*></a>> NameToFunDeclsMapTy;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> </div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  {</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">for</span> (Module::iterator it = mod.begin(), eit = mod.end(); it != eit; ++it)</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = &*it;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordflow">if</span> (fun->isDeclaration())</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  {</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  funDecls.insert(fun);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  declNames.insert(fun->getName().str());</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  }</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  funDefs.insert(fun);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  defNames.insert(fun->getName().str());</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  }</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="comment">// Find the intersectNames</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet<string>::iterator</a> declIter, defIter;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  declIter = declNames.begin();</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  defIter = defNames.begin();</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">while</span> (declIter != declNames.end() && defIter != defNames.end())</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keywordflow">if</span> (*declIter < *defIter)</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  {</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  declIter++;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  }</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="keywordflow">if</span> (!(*defIter < *declIter))</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  {</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  intersectNames.insert(*declIter);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  declIter++;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  defIter++;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  }</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  }</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span> </div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  NameToFunDefMapTy nameToFunDefMap;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*>::iterator</a> it = funDefs.begin(),</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  eit = funDefs.end(); it != eit; ++it)</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  {</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef = *it;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keywordtype">string</span> funName = fdef->getName().str();</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  nameToFunDefMap[funName] = fdef;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  }</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> </div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  NameToFunDeclsMapTy nameToFunDeclsMap;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*>::iterator</a> it = funDecls.begin(),</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  eit = funDecls.end(); it != eit; ++it)</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  {</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl = *it;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keywordtype">string</span> funName = fdecl->getName().str();</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  {</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*></a> decls;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  decls.insert(fdecl);</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  nameToFunDeclsMap[funName] = decls;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  }</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*></a> &decls = mit->second;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  decls.insert(fdecl);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  }</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  }</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> </div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*>::iterator</a> it = funDecls.begin(),</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  eit = funDecls.end(); it != eit; ++it)</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  {</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl = *it;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="keywordtype">string</span> funName = fdecl->getName().str();</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  NameToFunDefMapTy::iterator mit = nameToFunDefMap.find(funName);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">if</span> (mit == nameToFunDefMap.end())</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = mit->second;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  }</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> </div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*>::iterator</a> it = funDefs.begin(),</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  eit = funDefs.end(); it != eit; ++it)</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  {</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef = *it;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordtype">string</span> funName = fdef->getName().str();</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  std::vector<const Function*>& decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[fdef];</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*>::iterator</a> sit = mit->second.begin(),</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  seit = mit->second.end(); sit != seit; ++sit)</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  decls.push_back(*sit);</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  }</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  }</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> }</div><div class="ttc" id="namespaceSVF_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#l00060">BasicTypes.h:60</a></div></div>
|
|
1082
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00653">653</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1083
|
+
<div class="fragment"><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*></a> funDecls, funDefs;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet<string></a> declNames, defNames, intersectNames;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<string, const Function*></a> NameToFunDefMapTy;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<string, Set<const Function*></a>> NameToFunDeclsMapTy;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> </div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  {</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordflow">for</span> (Module::iterator it = mod.begin(), eit = mod.end(); it != eit; ++it)</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  {</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = &*it;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keywordflow">if</span> (fun->isDeclaration())</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  {</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  funDecls.insert(fun);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  declNames.insert(fun->getName().str());</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  }</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  {</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  funDefs.insert(fun);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  defNames.insert(fun->getName().str());</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  }</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  }</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  }</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="comment">// Find the intersectNames</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet<string>::iterator</a> declIter, defIter;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  declIter = declNames.begin();</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  defIter = defNames.begin();</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keywordflow">while</span> (declIter != declNames.end() && defIter != defNames.end())</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="keywordflow">if</span> (*declIter < *defIter)</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  {</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  declIter++;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  }</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  {</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keywordflow">if</span> (!(*defIter < *declIter))</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  intersectNames.insert(*declIter);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  declIter++;</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  }</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  defIter++;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  }</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  }</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span> </div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  NameToFunDefMapTy nameToFunDefMap;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*>::iterator</a> it = funDefs.begin(),</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  eit = funDefs.end(); it != eit; ++it)</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  {</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef = *it;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordtype">string</span> funName = fdef->getName().str();</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  nameToFunDefMap[funName] = fdef;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  }</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> </div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  NameToFunDeclsMapTy nameToFunDeclsMap;</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*>::iterator</a> it = funDecls.begin(),</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  eit = funDecls.end(); it != eit; ++it)</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl = *it;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="keywordtype">string</span> funName = fdecl->getName().str();</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*></a> decls;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  decls.insert(fdecl);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  nameToFunDeclsMap[funName] = decls;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  }</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*></a> &decls = mit->second;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  decls.insert(fdecl);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  }</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  }</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> </div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*>::iterator</a> it = funDecls.begin(),</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  eit = funDecls.end(); it != eit; ++it)</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  {</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl = *it;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordtype">string</span> funName = fdecl->getName().str();</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  NameToFunDefMapTy::iterator mit = nameToFunDefMap.find(funName);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keywordflow">if</span> (mit == nameToFunDefMap.end())</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = mit->second;</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  }</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> </div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*>::iterator</a> it = funDefs.begin(),</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  eit = funDefs.end(); it != eit; ++it)</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  {</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef = *it;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordtype">string</span> funName = fdef->getName().str();</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  std::vector<const Function*>& decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[fdef];</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*>::iterator</a> sit = mit->second.begin(),</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  seit = mit->second.end(); sit != seit; ++sit)</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  {</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  decls.push_back(*sit);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  }</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  }</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> }</div><div class="ttc" id="namespaceSVF_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#l00060">BasicTypes.h:60</a></div></div>
|
|
1081
1084
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a377cefaad4b688ab6edf94ba4abe00ee"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">SVF::LLVMModuleSet::FunDefToDeclsMap</a></div><div class="ttdeci">FunDefToDeclsMapTy FunDefToDeclsMap</div><div class="ttdoc">Function definition to function declaration map. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00074">LLVMModule.h:74</a></div></div>
|
|
1082
1085
|
<div class="ttc" id="namespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set< Key, Compare, Allocator > OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00102">SVFType.h:102</a></div></div>
|
|
1083
1086
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_aee80b29e5246e3eaa0e30e165346101f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">SVF::LLVMModuleSet::FunDeclToDefMap</a></div><div class="ttdeci">FunDeclToDefMapTy FunDeclToDefMap</div><div class="ttdoc">Function declaration to function definition map. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00072">LLVMModule.h:72</a></div></div>
|
|
@@ -1111,8 +1114,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1111
1114
|
</table>
|
|
1112
1115
|
</div><div class="memdoc">
|
|
1113
1116
|
|
|
1114
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1115
|
-
<div class="fragment"><div class="line"><a name="
|
|
1117
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00768">768</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1118
|
+
<div class="fragment"><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> {</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<string, Set<GlobalVariable*></a>> NameToGlobalsMapTy;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  NameToGlobalsMapTy nameToGlobalsMap;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  {</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="comment">// Collect ctor and dtor functions</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">for</span> (Module::global_iterator it = mod.global_begin(), eit = mod.global_end(); it != eit; ++it)</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  {</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *global = &*it;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordflow">if</span> (global->hasPrivateLinkage())</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordtype">string</span> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> = global->getName().str();</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  NameToGlobalsMapTy::iterator mit = nameToGlobalsMap.find(name);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="keywordflow">if</span> (mit == nameToGlobalsMap.end())</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  {</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<GlobalVariable*></a> globals;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  globals.insert(global);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  nameToGlobalsMap[<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>] = globals;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  }</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  {</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<GlobalVariable*></a> &globals = mit->second;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  globals.insert(global);</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  }</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  }</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  }</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span> </div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">for</span> (NameToGlobalsMapTy::iterator it = nameToGlobalsMap.begin(),</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  eit = nameToGlobalsMap.end(); it != eit; ++it)</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  {</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<GlobalVariable*></a> &globals = it->second;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *rep = *(globals.begin());</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<GlobalVariable*>::iterator</a> repit = globals.begin();</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="keywordflow">while</span> (repit != globals.end())</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  {</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *cur = *repit;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">if</span> (cur->hasInitializer())</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  {</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  rep = cur;</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  }</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  repit++;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  }</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<GlobalVariable*>::iterator</a> sit = globals.begin(),</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  seit = globals.end(); sit != seit; ++sit)</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *cur = *sit;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>[cur] = rep;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  }</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> }</div><div class="ttc" id="namespaceSVF_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#l00060">BasicTypes.h:60</a></div></div>
|
|
1116
1119
|
<div class="ttc" id="namespaceSVF_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#l00105">BasicTypes.h:105</a></div></div>
|
|
1117
1120
|
<div class="ttc" id="cJSON_8h_html_a25d22ecc7e656d2c59332072684e8766"><div class="ttname"><a href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a></div><div class="ttdeci">const char *const name</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00264">cJSON.h:264</a></div></div>
|
|
1118
1121
|
<div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00099">SVFType.h:99</a></div></div>
|
|
@@ -1138,11 +1141,11 @@ Static Private Attributes</h2></td></tr>
|
|
|
1138
1141
|
</table>
|
|
1139
1142
|
</div><div class="memdoc">
|
|
1140
1143
|
|
|
1141
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1142
|
-
<div class="fragment"><div class="line"><a name="
|
|
1144
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00087">87</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1145
|
+
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">double</span> startSVFModuleTime = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a> = std::make_unique<SVFModule>(mod.getModuleIdentifier());</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(mod);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#af8edfe08027020f14b81b44362c6018e">build</a>();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">double</span> endSVFModuleTime = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="classSVF_1_1SVFStat.html#aa4950ec26b66a085ad38ac154b789db5">SVFStat::timeOfBuildingLLVMModule</a> = (endSVFModuleTime - startSVFModuleTime)/<a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#afb6ac5d4e334d6e3acb66c8e33ae8d18">build_symbol_table</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>.get();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_afb6ac5d4e334d6e3acb66c8e33ae8d18"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afb6ac5d4e334d6e3acb66c8e33ae8d18">SVF::LLVMModuleSet::build_symbol_table</a></div><div class="ttdeci">void build_symbol_table() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00124">LLVMModule.cpp:124</a></div></div>
|
|
1143
1146
|
<div class="ttc" id="SVFType_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#l00444">SVFType.h:444</a></div></div>
|
|
1144
1147
|
<div class="ttc" id="classSVF_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>
|
|
1145
|
-
<div class="ttc" id="classSVF_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#
|
|
1148
|
+
<div class="ttc" id="classSVF_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#l00138">LLVMModule.cpp:138</a></div></div>
|
|
1146
1149
|
<div class="ttc" id="classSVF_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>
|
|
1147
1150
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acde6292e719c80f93d3d1c344ab442cd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">SVF::LLVMModuleSet::modules</a></div><div class="ttdeci">std::vector< std::reference_wrapper< Module > > modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
1148
1151
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3e14bbb3ae0acc74775ac3233a84d379"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">std::unique_ptr< SVFModule > svfModule</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00066">LLVMModule.h:66</a></div></div>
|
|
@@ -1165,14 +1168,14 @@ Static Private Attributes</h2></td></tr>
|
|
|
1165
1168
|
</table>
|
|
1166
1169
|
</div><div class="memdoc">
|
|
1167
1170
|
|
|
1168
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1169
|
-
<div class="fragment"><div class="line"><a name="
|
|
1171
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00102">102</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1172
|
+
<div class="fragment"><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">double</span> startSVFModuleTime = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  assert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a> && <span class="stringliteral">"LLVM Module set needs to be created!"</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a>(moduleNameVec);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span>(!moduleNameVec.empty())</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a> = std::make_unique<SVFModule>(*moduleNameVec.begin());</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a> = std::make_unique<SVFModule>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#af8edfe08027020f14b81b44362c6018e">build</a>();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">double</span> endSVFModuleTime = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classSVF_1_1SVFStat.html#aa4950ec26b66a085ad38ac154b789db5">SVFStat::timeOfBuildingLLVMModule</a> = (endSVFModuleTime - startSVFModuleTime)/<a class="code" href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#afb6ac5d4e334d6e3acb66c8e33ae8d18">build_symbol_table</a>();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>.get();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_afb6ac5d4e334d6e3acb66c8e33ae8d18"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afb6ac5d4e334d6e3acb66c8e33ae8d18">SVF::LLVMModuleSet::build_symbol_table</a></div><div class="ttdeci">void build_symbol_table() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00124">LLVMModule.cpp:124</a></div></div>
|
|
1170
1173
|
<div class="ttc" id="SVFType_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#l00444">SVFType.h:444</a></div></div>
|
|
1171
1174
|
<div class="ttc" id="classSVF_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>
|
|
1172
1175
|
<div class="ttc" id="classSVF_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#l00064">LLVMModule.h:64</a></div></div>
|
|
1173
|
-
<div class="ttc" id="classSVF_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#
|
|
1176
|
+
<div class="ttc" id="classSVF_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#l00138">LLVMModule.cpp:138</a></div></div>
|
|
1174
1177
|
<div class="ttc" id="classSVF_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>
|
|
1175
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a298966366b02d0a34f409c2c77da3789"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">SVF::LLVMModuleSet::loadModules</a></div><div class="ttdeci">void loadModules(const std::vector< std::string > &moduleNameVec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1178
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a298966366b02d0a34f409c2c77da3789"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">SVF::LLVMModuleSet::loadModules</a></div><div class="ttdeci">void loadModules(const std::vector< std::string > &moduleNameVec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00409">LLVMModule.cpp:409</a></div></div>
|
|
1176
1179
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3e14bbb3ae0acc74775ac3233a84d379"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">std::unique_ptr< SVFModule > svfModule</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00066">LLVMModule.h:66</a></div></div>
|
|
1177
1180
|
</div><!-- fragment -->
|
|
1178
1181
|
</div>
|
|
@@ -1207,25 +1210,25 @@ Static Private Attributes</h2></td></tr>
|
|
|
1207
1210
|
<p>Array's flatten field infor is the same as its element's flatten infor.</p>
|
|
1208
1211
|
<p>Flatten arrays, map each array element index <code>i</code> to flattened index <code>(i * nfE * totalElemNum)/outArrayElemNum</code> nfE>1 if the array element is a struct with more than one field. </p>
|
|
1209
1212
|
|
|
1210
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1211
|
-
<div class="fragment"><div class="line"><a name="
|
|
1213
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01057">1057</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1214
|
+
<div class="fragment"><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> {</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty->getNumElements();</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty->getElementType();</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast<ArrayType>(elemTy))</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  {</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  totalElemNum *= aty->getNumElements();</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  elemTy = aty->getElementType();</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  }</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> </div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(totalElemNum);</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> </div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <span class="keywordflow">if</span>(totalElemNum==0)</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  {</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy), 0);</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy));</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy));</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  }</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> </div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* elemStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j < nfE; j++)</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  {</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* fieldTy = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  }</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> </div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> outArrayElemNum = ty->getNumElements();</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < outArrayElemNum; i++)</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy), (i * nfE * totalElemNum)/outArrayElemNum);</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> </div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < totalElemNum; i++)</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  {</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j < nfE; j++)</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  {</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j]);</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  }</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  }</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> </div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  assert(stinfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum && <span class="stringliteral">"typeForArray size incorrect!!!"</span>);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfE, nfE * totalElemNum);</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> </div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> }</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00059">BasicTypes.h:59</a></div></div>
|
|
1212
1215
|
<div class="ttc" id="namespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
1213
1216
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
|
|
1214
1217
|
<div class="ttc" id="classSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector< const SVFType * > & getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00183">SVFType.h:183</a></div></div>
|
|
1215
1218
|
<div class="ttc" id="classSVF_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>
|
|
1216
1219
|
<div class="ttc" id="classSVF_1_1StInfo_html_a03bfeee0406c7e54557e74f3a8e848b7"><div class="ttname"><a href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">SVF::StInfo::getFlattenElementTypes</a></div><div class="ttdeci">std::vector< const SVFType * > & getFlattenElementTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00179">SVFType.h:179</a></div></div>
|
|
1217
|
-
<div class="ttc" id="classSVF_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#
|
|
1220
|
+
<div class="ttc" id="classSVF_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#l01001">LLVMModule.cpp:1001</a></div></div>
|
|
1218
1221
|
<div class="ttc" id="classSVF_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#l00233">SVFType.h:233</a></div></div>
|
|
1219
1222
|
<div class="ttc" id="classSVF_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#l00209">SVFType.h:209</a></div></div>
|
|
1220
|
-
<div class="ttc" id="classSVF_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#
|
|
1223
|
+
<div class="ttc" id="classSVF_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#l00982">LLVMModule.cpp:982</a></div></div>
|
|
1221
1224
|
<div class="ttc" id="classSVF_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#l00131">SVFType.h:131</a></div></div>
|
|
1222
1225
|
<div class="ttc" id="classSVF_1_1StInfo_html_ae5fad367673315da57a604e64b5889f0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">SVF::StInfo::getNumOfFlattenFields</a></div><div class="ttdeci">u32_t getNumOfFlattenFields() const</div><div class="ttdoc">Return the number of fields after flattenning (ignoring array elements) </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00222">SVFType.h:222</a></div></div>
|
|
1223
1226
|
<div class="ttc" id="namespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00052">SVFType.h:52</a></div></div>
|
|
1224
1227
|
</div><!-- fragment -->
|
|
1225
1228
|
</div>
|
|
1226
1229
|
</div>
|
|
1227
|
-
<a id="
|
|
1228
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
1230
|
+
<a id="a52853bd34a394882c6fd0fc73739c9f2"></a>
|
|
1231
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a52853bd34a394882c6fd0fc73739c9f2">◆ </a></span>collectSimpleTypeInfo()</h2>
|
|
1229
1232
|
|
|
1230
1233
|
<div class="memitem">
|
|
1231
1234
|
<div class="memproto">
|
|
@@ -1236,19 +1239,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
1236
1239
|
<tr>
|
|
1237
1240
|
<td class="memname"><a class="el" href="classSVF_1_1StInfo.html">StInfo</a> * LLVMModuleSet::collectSimpleTypeInfo </td>
|
|
1238
1241
|
<td>(</td>
|
|
1239
|
-
<td class="paramtype"><a class="el" href="classSVF_1_1StInfo.html">StInfo</a> * </td>
|
|
1240
|
-
<td class="paramname"><em>stinfo</em>, </td>
|
|
1241
|
-
</tr>
|
|
1242
|
-
<tr>
|
|
1243
|
-
<td class="paramkey"></td>
|
|
1244
|
-
<td></td>
|
|
1245
1242
|
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * </td>
|
|
1246
|
-
<td class="paramname"><em>ty</em
|
|
1247
|
-
</tr>
|
|
1248
|
-
<tr>
|
|
1243
|
+
<td class="paramname"><em>ty</em></td><td>)</td>
|
|
1249
1244
|
<td></td>
|
|
1250
|
-
<td>)</td>
|
|
1251
|
-
<td></td><td></td>
|
|
1252
1245
|
</tr>
|
|
1253
1246
|
</table>
|
|
1254
1247
|
</td>
|
|
@@ -1262,12 +1255,13 @@ Static Private Attributes</h2></td></tr>
|
|
|
1262
1255
|
<p>Collect simple type (non-aggregate) info </p>
|
|
1263
1256
|
<p>Only one field </p>
|
|
1264
1257
|
|
|
1265
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1266
|
-
<div class="fragment"><div class="line"><a name="
|
|
1258
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01169">1169</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1259
|
+
<div class="fragment"><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> {</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(0, <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty), 0);</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> </div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty));</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty));</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> </div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span> }</div><div class="ttc" id="classSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector< const SVFType * > & getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00183">SVFType.h:183</a></div></div>
|
|
1267
1260
|
<div class="ttc" id="classSVF_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>
|
|
1268
1261
|
<div class="ttc" id="classSVF_1_1StInfo_html_a03bfeee0406c7e54557e74f3a8e848b7"><div class="ttname"><a href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">SVF::StInfo::getFlattenElementTypes</a></div><div class="ttdeci">std::vector< const SVFType * > & getFlattenElementTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00179">SVFType.h:179</a></div></div>
|
|
1269
1262
|
<div class="ttc" id="classSVF_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#l00209">SVFType.h:209</a></div></div>
|
|
1270
|
-
<div class="ttc" id="classSVF_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#
|
|
1263
|
+
<div class="ttc" id="classSVF_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#l00982">LLVMModule.cpp:982</a></div></div>
|
|
1264
|
+
<div class="ttc" id="classSVF_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#l00131">SVFType.h:131</a></div></div>
|
|
1271
1265
|
</div><!-- fragment -->
|
|
1272
1266
|
</div>
|
|
1273
1267
|
</div>
|
|
@@ -1310,17 +1304,17 @@ Static Private Attributes</h2></td></tr>
|
|
|
1310
1304
|
<p>The struct info should not be processed before</p>
|
|
1311
1305
|
<p>offset with int_32 (s32_t) is large enough and will not cause overflow </p>
|
|
1312
1306
|
|
|
1313
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1314
|
-
<div class="fragment"><div class="line"><a name="
|
|
1307
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01114">1114</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1308
|
+
<div class="fragment"><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> {</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span> </div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <span class="comment">// Number of fields after flattening the struct</span></div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  nf = 0;</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  <span class="comment">// The offset when considering array stride info</span></div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <span class="keywordflow">for</span> (StructType::element_iterator it = sty->element_begin(), ie =</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  sty->element_end(); it != ie; ++it)</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  {</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* et = *it;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">addFldWithType</a>(nf, <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(et), strideOffset);</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span> </div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType, ArrayType>(et))</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  {</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> * subStinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(et);</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStinfo-><a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  <span class="comment">//Copy ST's info, whose element 0 is the size of ST itself.</span></div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j < nfE; j++)</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  {</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = subStinfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  }</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  nf += nfE;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  strideOffset += nfE * subStinfo-><a class="code" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">getStride</a>();</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpi = 0; tpi < subStinfo-><a class="code" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">getStride</a>(); tpi++)</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  {</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj < nfE; tpj++)</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  {</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(subStinfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[tpj]);</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  }</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  }</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  }</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <span class="keywordflow">else</span> <span class="comment">//simple type</span></div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  {</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  nf += 1;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  strideOffset += 1;</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(et));</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(et));</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  }</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  }</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> </div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  assert(stinfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset && <span class="stringliteral">"typeForStruct size incorrect!"</span>);</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  stinfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nf,strideOffset);</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> </div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> }</div><div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00059">BasicTypes.h:59</a></div></div>
|
|
1315
1309
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
|
|
1316
1310
|
<div class="ttc" id="classSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector< const SVFType * > & getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00183">SVFType.h:183</a></div></div>
|
|
1317
1311
|
<div class="ttc" id="classSVF_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>
|
|
1318
1312
|
<div class="ttc" id="classSVF_1_1StInfo_html_af5094ec542f345d214a682d4138cf690"><div class="ttname"><a href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">SVF::StInfo::getStride</a></div><div class="ttdeci">u32_t getStride() const</div><div class="ttdoc">Return the stride. </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00227">SVFType.h:227</a></div></div>
|
|
1319
1313
|
<div class="ttc" id="classSVF_1_1StInfo_html_a03bfeee0406c7e54557e74f3a8e848b7"><div class="ttname"><a href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">SVF::StInfo::getFlattenElementTypes</a></div><div class="ttdeci">std::vector< const SVFType * > & getFlattenElementTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00179">SVFType.h:179</a></div></div>
|
|
1320
|
-
<div class="ttc" id="classSVF_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#
|
|
1314
|
+
<div class="ttc" id="classSVF_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#l01001">LLVMModule.cpp:1001</a></div></div>
|
|
1321
1315
|
<div class="ttc" id="classSVF_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#l00233">SVFType.h:233</a></div></div>
|
|
1322
1316
|
<div class="ttc" id="classSVF_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#l00209">SVFType.h:209</a></div></div>
|
|
1323
|
-
<div class="ttc" id="classSVF_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#
|
|
1317
|
+
<div class="ttc" id="classSVF_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#l00982">LLVMModule.cpp:982</a></div></div>
|
|
1324
1318
|
<div class="ttc" id="classSVF_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#l00131">SVFType.h:131</a></div></div>
|
|
1325
1319
|
<div class="ttc" id="classSVF_1_1StInfo_html_ae5fad367673315da57a604e64b5889f0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">SVF::StInfo::getNumOfFlattenFields</a></div><div class="ttdeci">u32_t getNumOfFlattenFields() const</div><div class="ttdoc">Return the number of fields after flattenning (ignoring array elements) </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00222">SVFType.h:222</a></div></div>
|
|
1326
1320
|
</div><!-- fragment -->
|
|
@@ -1351,20 +1345,19 @@ Static Private Attributes</h2></td></tr>
|
|
|
1351
1345
|
</div><div class="memdoc">
|
|
1352
1346
|
|
|
1353
1347
|
<p>Collect a type info. </p>
|
|
1354
|
-
<p>The simple type info should not be processed before </p>
|
|
1355
1348
|
|
|
1356
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1357
|
-
<div class="fragment"><div class="line"><a name="
|
|
1358
|
-
<div class="ttc" id="
|
|
1349
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01001">1001</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1350
|
+
<div class="fragment"><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> {</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> </div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <span class="keywordflow">if</span>(tit != <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.end())</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  {</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  stinfo = tit->second;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  }</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  {</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast<ArrayType>(T))</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* sty = SVFUtil::dyn_cast<StructType>(T))</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  {</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a93315673be515ce5c2fabd36fa927128">collectStructInfo</a>(sty, nf);</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="keywordflow">if</span> (nf > <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  {</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">maxStruct</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(sty);</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  }</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  }</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a>(T);</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad13302dd3e5585e8feba4b0cb31991a2">StInfos</a>.insert(stinfo);</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>[T] = stinfo;</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  }</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ad13302dd3e5585e8feba4b0cb31991a2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad13302dd3e5585e8feba4b0cb31991a2">SVF::LLVMModuleSet::StInfos</a></div><div class="ttdeci">Set< const StInfo * > StInfos</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00087">LLVMModule.h:87</a></div></div>
|
|
1351
|
+
<div class="ttc" id="namespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
1352
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a93315673be515ce5c2fabd36fa927128"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a93315673be515ce5c2fabd36fa927128">SVF::LLVMModuleSet::collectStructInfo</a></div><div class="ttdeci">StInfo * collectStructInfo(const StructType *T, u32_t &nf)</div><div class="ttdoc">Collect the struct info; nf contains the number of fields after flattening. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01114">LLVMModule.cpp:1114</a></div></div>
|
|
1359
1353
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
|
|
1360
|
-
<div class="ttc" id="classSVF_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#
|
|
1354
|
+
<div class="ttc" id="classSVF_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#l01057">LLVMModule.cpp:1057</a></div></div>
|
|
1361
1355
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00321">SymbolTableInfo.h:321</a></div></div>
|
|
1362
|
-
<div class="ttc" id="
|
|
1356
|
+
<div class="ttc" id="classSVF_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#l01169">LLVMModule.cpp:1169</a></div></div>
|
|
1363
1357
|
<div class="ttc" id="classSVF_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#l00318">SymbolTableInfo.h:318</a></div></div>
|
|
1364
1358
|
<div class="ttc" id="namespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
1365
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_abcd6d9513511e6a306189a87fe3dfa06"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#abcd6d9513511e6a306189a87fe3dfa06">SVF::LLVMModuleSet::collectSimpleTypeInfo</a></div><div class="ttdeci">StInfo * collectSimpleTypeInfo(StInfo *info, 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#l01177">LLVMModule.cpp:1177</a></div></div>
|
|
1366
1359
|
<div class="ttc" id="classSVF_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#l00086">LLVMModule.h:86</a></div></div>
|
|
1367
|
-
<div class="ttc" id="classSVF_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#
|
|
1360
|
+
<div class="ttc" id="classSVF_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#l00982">LLVMModule.cpp:982</a></div></div>
|
|
1368
1361
|
<div class="ttc" id="classSVF_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#l00131">SVFType.h:131</a></div></div>
|
|
1369
1362
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5552135a27684cbe4d2a5ed346f64644"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">SVF::LLVMModuleSet::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00065">LLVMModule.h:65</a></div></div>
|
|
1370
1363
|
</div><!-- fragment -->
|
|
@@ -1396,8 +1389,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1396
1389
|
<p>GlobalVariable</p>
|
|
1397
1390
|
<p>GlobalAlias </p>
|
|
1398
1391
|
|
|
1399
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1400
|
-
<div class="fragment"><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">for</span> (Module::const_iterator it = mod.begin(), eit = mod.end(); it != eit; ++it)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = &*it;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFunc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>(func->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func->getType()), SVFUtil::cast<SVFFunctionType>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func->getFunctionType())), func->isDeclaration(), <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">LLVMUtil::isIntrinsicFun</a>(func), func->hasAddressTaken(), func->isVarArg(), ld);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>->addFunctionSet(svfFunc);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab671d5bb9ca5761e2b438a4d4da229cf">addFunctionMap</a>(func,svfFunc);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">for</span> (Function::const_arg_iterator I = func->arg_begin(), E = func->arg_end(); I != E; ++I)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = &*I;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* svfarg = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>(arg->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(arg->getType()), svfFunc, arg->getArgNo(), <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">LLVMUtil::isArgOfUncalledFunction</a>(arg));</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  svfFunc-><a class="code" href="classSVF_1_1SVFFunction.html#ad865b8440a6e0d5d212798d2213e1e9c">addArgument</a>(svfarg);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5595ec3f7582934dc499770825bf5373">addArgumentMap</a>(arg,svfarg);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">for</span> (Function::const_iterator bit = func->begin(), ebit = func->end(); bit != ebit; ++bit)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &*bit;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>(bb->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(bb->getType()), svfFunc);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  svfFunc-><a class="code" href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">addBasicBlock</a>(svfBB);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">addBasicBlockMap</a>(bb,svfBB);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator iit = bb->begin(), eiit = bb->end(); iit != eiit; ++iit)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &*iit;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast<CallBase>(inst))</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1cppUtil.html#aab1dce633f9a03796c208b6fba2bd2b4">cppUtil::isVirtualCallSite</a>(call))</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>(call->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call->getType()), svfBB,call->getFunctionType()->isVarArg(),inst->isTerminator());</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>(call->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call->getType()), svfBB,call->getFunctionType()->isVarArg(),inst->isTerminator());</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>(inst->getName().str(),<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(inst->getType()), svfBB, inst->isTerminator(), SVFUtil::isa<ReturnInst>(inst));</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  svfBB-><a class="code" href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">addInstruction</a>(svfInst);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">addInstructionMap</a>(inst,svfInst);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">for</span> (Module::const_global_iterator it = mod.global_begin(),</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  eit = mod.global_end(); it != eit; ++it)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* global = &*it;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfglobal = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(global->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(global->getType()));</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>->addGlobalSet(svfglobal);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(global,svfglobal);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">for</span> (Module::const_alias_iterator it = mod.alias_begin(),</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  eit = mod.alias_end(); it != eit; ++it)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">GlobalAlias</a> *alias = &*it;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfalias = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(alias->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(alias->getType()));</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>->addAliasSet(svfalias);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(alias,svfalias);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a172084437a8450314a17f7085a32b5d2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">SVF::LLVMModuleSet::addInstructionMap</a></div><div class="ttdeci">void addInstructionMap(const Instruction *inst, SVFInstruction *svfInst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00154">LLVMModule.h:154</a></div></div>
|
|
1392
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00153">153</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1393
|
+
<div class="fragment"><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">for</span> (Module::const_iterator it = mod.begin(), eit = mod.end(); it != eit; ++it)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = &*it;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFunc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>(func->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func->getType()), SVFUtil::cast<SVFFunctionType>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(func->getFunctionType())), func->isDeclaration(), <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">LLVMUtil::isIntrinsicFun</a>(func), func->hasAddressTaken(), func->isVarArg(), ld);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>->addFunctionSet(svfFunc);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab671d5bb9ca5761e2b438a4d4da229cf">addFunctionMap</a>(func,svfFunc);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">for</span> (Function::const_arg_iterator I = func->arg_begin(), E = func->arg_end(); I != E; ++I)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = &*I;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* svfarg = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>(arg->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(arg->getType()), svfFunc, arg->getArgNo(), <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">LLVMUtil::isArgOfUncalledFunction</a>(arg));</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  svfFunc-><a class="code" href="classSVF_1_1SVFFunction.html#ad865b8440a6e0d5d212798d2213e1e9c">addArgument</a>(svfarg);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5595ec3f7582934dc499770825bf5373">addArgumentMap</a>(arg,svfarg);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">for</span> (Function::const_iterator bit = func->begin(), ebit = func->end(); bit != ebit; ++bit)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &*bit;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>(bb->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(bb->getType()), svfFunc);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  svfFunc-><a class="code" href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">addBasicBlock</a>(svfBB);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">addBasicBlockMap</a>(bb,svfBB);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator iit = bb->begin(), eiit = bb->end(); iit != eiit; ++iit)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &*iit;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast<CallBase>(inst))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1cppUtil.html#aab1dce633f9a03796c208b6fba2bd2b4">cppUtil::isVirtualCallSite</a>(call))</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>(call->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call->getType()), svfBB,call->getFunctionType()->isVarArg(),inst->isTerminator());</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>(call->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(call->getType()), svfBB,call->getFunctionType()->isVarArg(),inst->isTerminator());</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  svfInst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>(inst->getName().str(),<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(inst->getType()), svfBB, inst->isTerminator(), SVFUtil::isa<ReturnInst>(inst));</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  svfBB-><a class="code" href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">addInstruction</a>(svfInst);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">addInstructionMap</a>(inst,svfInst);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">for</span> (Module::const_global_iterator it = mod.global_begin(),</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  eit = mod.global_end(); it != eit; ++it)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* global = &*it;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfglobal = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(global->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(global->getType()));</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>->addGlobalSet(svfglobal);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(global,svfglobal);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">for</span> (Module::const_alias_iterator it = mod.alias_begin(),</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  eit = mod.alias_end(); it != eit; ++it)</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">GlobalAlias</a> *alias = &*it;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* svfalias = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>(alias->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(alias->getType()));</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>->addAliasSet(svfalias);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">addGlobalValueMap</a>(alias,svfalias);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a172084437a8450314a17f7085a32b5d2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">SVF::LLVMModuleSet::addInstructionMap</a></div><div class="ttdeci">void addInstructionMap(const Instruction *inst, SVFInstruction *svfInst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00155">LLVMModule.h:155</a></div></div>
|
|
1401
1394
|
<div class="ttc" id="classSVF_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#l00570">SVFValue.h:570</a></div></div>
|
|
1402
1395
|
<div class="ttc" id="namespaceSVF_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#l00060">BasicTypes.h:60</a></div></div>
|
|
1403
1396
|
<div class="ttc" id="namespaceSVF_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#l00186">LLVMUtil.cpp:186</a></div></div>
|
|
@@ -1406,10 +1399,10 @@ Static Private Attributes</h2></td></tr>
|
|
|
1406
1399
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00257">SVFValue.h:257</a></div></div>
|
|
1407
1400
|
<div class="ttc" id="classSVF_1_1SVFVirtualCallInst_html"><div class="ttname"><a href="classSVF_1_1SVFVirtualCallInst.html">SVF::SVFVirtualCallInst</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00707">SVFValue.h:707</a></div></div>
|
|
1408
1401
|
<div class="ttc" id="classSVF_1_1SVFCallInst_html"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html">SVF::SVFCallInst</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00635">SVFValue.h:635</a></div></div>
|
|
1409
|
-
<div class="ttc" id="classSVF_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#
|
|
1402
|
+
<div class="ttc" id="classSVF_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>
|
|
1410
1403
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_aab1dce633f9a03796c208b6fba2bd2b4"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aab1dce633f9a03796c208b6fba2bd2b4">SVF::cppUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00259">CPPUtil.cpp:259</a></div></div>
|
|
1411
1404
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
|
|
1412
|
-
<div class="ttc" id="classSVF_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#
|
|
1405
|
+
<div class="ttc" id="classSVF_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>
|
|
1413
1406
|
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00063">BasicTypes.h:63</a></div></div>
|
|
1414
1407
|
<div class="ttc" id="namespaceSVF_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#l00104">BasicTypes.h:104</a></div></div>
|
|
1415
1408
|
<div class="ttc" id="namespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00120">BasicTypes.h:120</a></div></div>
|
|
@@ -1418,13 +1411,13 @@ Static Private Attributes</h2></td></tr>
|
|
|
1418
1411
|
<div class="ttc" id="classSVF_1_1SVFFunction_html_ad865b8440a6e0d5d212798d2213e1e9c"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ad865b8440a6e0d5d212798d2213e1e9c">SVF::SVFFunction::addArgument</a></div><div class="ttdeci">void addArgument(SVFArgument *arg)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00288">SVFValue.h:288</a></div></div>
|
|
1419
1412
|
<div class="ttc" id="classSVF_1_1SVFLoopAndDomInfo_html"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html">SVF::SVFLoopAndDomInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00050">SVFValue.h:50</a></div></div>
|
|
1420
1413
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acde6292e719c80f93d3d1c344ab442cd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">SVF::LLVMModuleSet::modules</a></div><div class="ttdeci">std::vector< std::reference_wrapper< Module > > modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
1421
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5595ec3f7582934dc499770825bf5373"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5595ec3f7582934dc499770825bf5373">SVF::LLVMModuleSet::addArgumentMap</a></div><div class="ttdeci">void addArgumentMap(const Argument *arg, SVFArgument *svfArg)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#
|
|
1414
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5595ec3f7582934dc499770825bf5373"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5595ec3f7582934dc499770825bf5373">SVF::LLVMModuleSet::addArgumentMap</a></div><div class="ttdeci">void addArgumentMap(const Argument *arg, SVFArgument *svfArg)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00160">LLVMModule.h:160</a></div></div>
|
|
1422
1415
|
<div class="ttc" id="classSVF_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#l00819">SVFValue.h:819</a></div></div>
|
|
1423
1416
|
<div class="ttc" id="classSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00471">SVFValue.h:471</a></div></div>
|
|
1424
1417
|
<div class="ttc" id="namespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00121">BasicTypes.h:121</a></div></div>
|
|
1425
1418
|
<div class="ttc" id="classSVF_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#l00283">SVFValue.h:283</a></div></div>
|
|
1426
|
-
<div class="ttc" id="classSVF_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#
|
|
1427
|
-
<div class="ttc" id="classSVF_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#
|
|
1419
|
+
<div class="ttc" id="classSVF_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>
|
|
1420
|
+
<div class="ttc" id="classSVF_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#l00982">LLVMModule.cpp:982</a></div></div>
|
|
1428
1421
|
<div class="ttc" id="classSVF_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#l00486">SVFValue.h:486</a></div></div>
|
|
1429
1422
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3e14bbb3ae0acc74775ac3233a84d379"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">std::unique_ptr< SVFModule > svfModule</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00066">LLVMModule.h:66</a></div></div>
|
|
1430
1423
|
</div><!-- fragment -->
|
|
@@ -1446,8 +1439,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1446
1439
|
</table>
|
|
1447
1440
|
</div><div class="memdoc">
|
|
1448
1441
|
|
|
1449
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1450
|
-
<div class="fragment"><div class="line"><a name="
|
|
1442
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00822">822</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1443
|
+
<div class="fragment"><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> {</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  {</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> moduleName = mod.getName().str();</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> OutputFilename;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  std::size_t pos = moduleName.rfind(<span class="charliteral">'.'</span>);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">if</span> (pos != std::string::npos)</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  OutputFilename = moduleName.substr(0, pos) + suffix;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  OutputFilename = moduleName + suffix;</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> </div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  std::error_code EC;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <a class="code" href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">raw_fd_ostream</a> OS(OutputFilename.c_str(), EC, llvm::sys::fs::OF_None);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> </div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span> <span class="preprocessor">#if (LLVM_VERSION_MAJOR >= 7)</span></div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  WriteBitcodeToFile(mod, OS);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  WriteBitcodeToFile(&mod, OS);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> </div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  OS.flush();</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  }</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> }</div><div class="ttc" id="namespaceSVF_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#l00060">BasicTypes.h:60</a></div></div>
|
|
1451
1444
|
<div class="ttc" id="namespaceSVF_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#l00234">BasicTypes.h:234</a></div></div>
|
|
1452
1445
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acde6292e719c80f93d3d1c344ab442cd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">SVF::LLVMModuleSet::modules</a></div><div class="ttdeci">std::vector< std::reference_wrapper< Module > > modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
1453
1446
|
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
@@ -1477,8 +1470,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1477
1470
|
</table>
|
|
1478
1471
|
</div><div class="memdoc">
|
|
1479
1472
|
|
|
1480
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
1481
|
-
<div class="fragment"><div class="line"><a name="
|
|
1473
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00318">318</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1474
|
+
<div class="fragment"><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() == 0;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="ttc" id="classSVF_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>
|
|
1482
1475
|
</div><!-- fragment -->
|
|
1483
1476
|
</div>
|
|
1484
1477
|
</div>
|
|
@@ -1505,9 +1498,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
1505
1498
|
</table>
|
|
1506
1499
|
</div><div class="memdoc">
|
|
1507
1500
|
|
|
1508
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
1509
|
-
<div class="fragment"><div class="line"><a name="
|
|
1510
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ae19e38054c55d5822dfc83a12f12aa60"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">SVF::LLVMModuleSet::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#
|
|
1501
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00312">312</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1502
|
+
<div class="fragment"><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  assert(!<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>() && <span class="stringliteral">"empty LLVM module!!"</span>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>()->getContext();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div><div class="ttc" id="classSVF_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>
|
|
1503
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ae19e38054c55d5822dfc83a12f12aa60"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">SVF::LLVMModuleSet::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00318">LLVMModule.h:318</a></div></div>
|
|
1511
1504
|
</div><!-- fragment -->
|
|
1512
1505
|
</div>
|
|
1513
1506
|
</div>
|
|
@@ -1535,11 +1528,11 @@ Static Private Attributes</h2></td></tr>
|
|
|
1535
1528
|
</table>
|
|
1536
1529
|
</div><div class="memdoc">
|
|
1537
1530
|
|
|
1538
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
1539
|
-
<div class="fragment"><div class="line"><a name="
|
|
1540
|
-
<div class="ttc" id="classSVF_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#
|
|
1531
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00281">281</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1532
|
+
<div class="fragment"><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* funDef = fun;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span>(fun->isDeclaration() && <a class="code" href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">hasDefinition</a>(fun))</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  funDef = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">getDefinition</a>(fun);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  FunDefToDeclsMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.find(funDef);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  assert(it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.end() && <span class="stringliteral">"does not have a function definition (body)?"</span>);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a377cefaad4b688ab6edf94ba4abe00ee"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">SVF::LLVMModuleSet::FunDefToDeclsMap</a></div><div class="ttdeci">FunDefToDeclsMapTy FunDefToDeclsMap</div><div class="ttdoc">Function definition to function declaration map. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00074">LLVMModule.h:74</a></div></div>
|
|
1533
|
+
<div class="ttc" id="classSVF_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>
|
|
1541
1534
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
|
|
1542
|
-
<div class="ttc" id="classSVF_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#
|
|
1535
|
+
<div class="ttc" id="classSVF_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>
|
|
1543
1536
|
</div><!-- fragment -->
|
|
1544
1537
|
</div>
|
|
1545
1538
|
</div>
|
|
@@ -1567,8 +1560,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1567
1560
|
</table>
|
|
1568
1561
|
</div><div class="memdoc">
|
|
1569
1562
|
|
|
1570
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
1571
|
-
<div class="fragment"><div class="line"><a name="
|
|
1563
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00260">260</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1564
|
+
<div class="fragment"><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  assert(fun->isDeclaration() && <span class="stringliteral">"not a function declaration?"</span>);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  FunDeclToDefMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.find(fun);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  assert(it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.end() && <span class="stringliteral">"has no definition?"</span>);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_aee80b29e5246e3eaa0e30e165346101f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">SVF::LLVMModuleSet::FunDeclToDefMap</a></div><div class="ttdeci">FunDeclToDefMapTy FunDeclToDefMap</div><div class="ttdoc">Function declaration to function definition map. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00072">LLVMModule.h:72</a></div></div>
|
|
1572
1565
|
</div><!-- fragment -->
|
|
1573
1566
|
</div>
|
|
1574
1567
|
</div>
|
|
@@ -1596,8 +1589,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1596
1589
|
</table>
|
|
1597
1590
|
</div><div class="memdoc">
|
|
1598
1591
|
|
|
1599
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
1600
|
-
<div class="fragment"><div class="line"><a name="
|
|
1592
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00299">299</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1593
|
+
<div class="fragment"><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  GlobalDefToRepMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.find(val);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  assert(it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.end() && <span class="stringliteral">"has no rep?"</span>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="ttc" id="classSVF_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#l00076">LLVMModule.h:76</a></div></div>
|
|
1601
1594
|
</div><!-- fragment -->
|
|
1602
1595
|
</div>
|
|
1603
1596
|
</div>
|
|
@@ -1625,8 +1618,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1625
1618
|
</table>
|
|
1626
1619
|
</div><div class="memdoc">
|
|
1627
1620
|
|
|
1628
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1629
|
-
<div class="fragment"><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="comment">// This function is used to extract constructor and destructor functions</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="comment">// sorted by their priority from @llvm.global_ctors or @llvm.global_dtors.</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="comment">// For example, given following @llvm.global_ctors, the returning sorted</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="comment">// function list should be [ctor3, ctor1, ctor2].</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="comment">// ------------------------------------------------------------------</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="comment">// ; Each struct in the array is {priority, function, associated data}</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="comment">//</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="comment">// @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }]</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="comment">// [{ i32, void ()*, i8* } { i32 1234, void ()* @ctor1.cpp, i8* null },</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="comment">// { i32, void ()*, i8* } { i32 2345, void ()* @ctor2.cpp, i8* null },</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="comment">// { i32, void ()*, i8* } { i32 345, void ()* @ctor3.cpp, i8* null }]</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="comment">// ------------------------------------------------------------------</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="comment">// TODO: According to LLVM language reference, if the third field is</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="comment">// non-null, and points to a global variable or function, the initializer</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="comment">// function will only run if the associated data from the current module is</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="comment">// not discarded. However the associated data is currently ignored.</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> </div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="comment">// This class is used for the priority queue that sorts the functions by</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="comment">// their priority. Each object of this class stands for an item in the</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="comment">// function array.</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keyword">class </span>LLVMGlobalFunction</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> priority;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  LLVMGlobalFunction() {};</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  LLVMGlobalFunction(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> _priority, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* _func)</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  : priority(_priority), func(_func) {};</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">operator></a>(<span class="keyword">const</span> LLVMGlobalFunction &other)<span class="keyword"> const</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">if</span> (priority != other.priority)</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">return</span> priority > other.priority;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  }</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">return</span> func > other.func;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  };</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  std::priority_queue<LLVMGlobalFunction, std::vector<LLVMGlobalFunction>,</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  greater<LLVMGlobalFunction>></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  queue;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  std::vector<const Function* > result;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="comment">// The @llvm.global_ctors/dtors global variable is an array of struct. Each</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="comment">// struct has three fields: {i32 priority, void ()* @ctor/dtor, i8* @data}.</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="comment">// First get the array here.</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *globalFuncArray =</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  SVFUtil::dyn_cast<ConstantArray>(global->getInitializer()))</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="comment">// Get each struct in the array.</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < globalFuncArray->getNumOperands(); ++i)</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">if</span> (</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *globalFuncItem =</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  SVFUtil::dyn_cast<ConstantStruct>(</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  globalFuncArray->getOperand(i)))</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> </div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// Extract priority and function from the struct</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* priority = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>>(</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  globalFuncItem->getOperand(0));</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>>(</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  globalFuncItem->getOperand(1));</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> </div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">if</span> (priority && func)</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  queue.push(LLVMGlobalFunction(priority</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  ->getZExtValue(),</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  func));</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> </div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="comment">// Generate a sorted vector of functions from the priority queue.</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">while</span> (!queue.empty())</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  result.push_back(queue.top().func);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  queue.pop();</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> }</div><div class="ttc" id="namespaceSVF_html_a5ae718cba37d8e34d2946530dc098c8e"><div class="ttname"><a href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">SVF::ConstantArray</a></div><div class="ttdeci">llvm::ConstantArray ConstantArray</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00099">BasicTypes.h:99</a></div></div>
|
|
1621
|
+
<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>
|
|
1622
|
+
<div class="fragment"><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="comment">// This function is used to extract constructor and destructor functions</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="comment">// sorted by their priority from @llvm.global_ctors or @llvm.global_dtors.</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="comment">// For example, given following @llvm.global_ctors, the returning sorted</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="comment">// function list should be [ctor3, ctor1, ctor2].</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="comment">// ------------------------------------------------------------------</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="comment">// ; Each struct in the array is {priority, function, associated data}</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="comment">//</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="comment">// @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }]</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="comment">// [{ i32, void ()*, i8* } { i32 1234, void ()* @ctor1.cpp, i8* null },</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="comment">// { i32, void ()*, i8* } { i32 2345, void ()* @ctor2.cpp, i8* null },</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="comment">// { i32, void ()*, i8* } { i32 345, void ()* @ctor3.cpp, i8* null }]</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="comment">// ------------------------------------------------------------------</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="comment">// TODO: According to LLVM language reference, if the third field is</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="comment">// non-null, and points to a global variable or function, the initializer</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="comment">// function will only run if the associated data from the current module is</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="comment">// not discarded. However the associated data is currently ignored.</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="comment">// This class is used for the priority queue that sorts the functions by</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="comment">// their priority. Each object of this class stands for an item in the</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="comment">// function array.</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keyword">class </span>LLVMGlobalFunction</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> priority;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  LLVMGlobalFunction() {};</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  LLVMGlobalFunction(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> _priority, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* _func)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  : priority(_priority), func(_func) {};</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">operator></a>(<span class="keyword">const</span> LLVMGlobalFunction &other)<span class="keyword"> const</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">if</span> (priority != other.priority)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordflow">return</span> priority > other.priority;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  {</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">return</span> func > other.func;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  }</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  };</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  std::priority_queue<LLVMGlobalFunction, std::vector<LLVMGlobalFunction>,</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  greater<LLVMGlobalFunction>></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  queue;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  std::vector<const Function* > result;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="comment">// The @llvm.global_ctors/dtors global variable is an array of struct. Each</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="comment">// struct has three fields: {i32 priority, void ()* @ctor/dtor, i8* @data}.</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="comment">// First get the array here.</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *globalFuncArray =</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  SVFUtil::dyn_cast<ConstantArray>(global->getInitializer()))</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="comment">// Get each struct in the array.</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < globalFuncArray->getNumOperands(); ++i)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">if</span> (</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *globalFuncItem =</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  SVFUtil::dyn_cast<ConstantStruct>(</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  globalFuncArray->getOperand(i)))</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> </div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="comment">// Extract priority and function from the struct</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* priority = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>>(</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  globalFuncItem->getOperand(0));</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>>(</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  globalFuncItem->getOperand(1));</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> </div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">if</span> (priority && func)</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  queue.push(LLVMGlobalFunction(priority</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  ->getZExtValue(),</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  func));</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  }</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="comment">// Generate a sorted vector of functions from the priority queue.</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordflow">while</span> (!queue.empty())</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  {</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  result.push_back(queue.top().func);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  queue.pop();</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  }</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> }</div><div class="ttc" id="namespaceSVF_html_a5ae718cba37d8e34d2946530dc098c8e"><div class="ttname"><a href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">SVF::ConstantArray</a></div><div class="ttdeci">llvm::ConstantArray ConstantArray</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00099">BasicTypes.h:99</a></div></div>
|
|
1630
1623
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type > dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00405">Casting.h:405</a></div></div>
|
|
1631
1624
|
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00101">BasicTypes.h:101</a></div></div>
|
|
1632
1625
|
<div class="ttc" id="namespaceSVF_html_aedd9d023a68dddd66314be63bb8e48d2"><div class="ttname"><a href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">SVF::operator></a></div><div class="ttdeci">IntervalValue operator>(const IntervalValue &lhs, const IntervalValue &rhs)</div><div class="ttdoc">Greater than IntervalValues. </div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00564">IntervalValue.h:564</a></div></div>
|
|
@@ -1659,8 +1652,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1659
1652
|
</table>
|
|
1660
1653
|
</div><div class="memdoc">
|
|
1661
1654
|
|
|
1662
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
1663
|
-
<div class="fragment"><div class="line"><a name="
|
|
1655
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00126">126</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1656
|
+
<div class="fragment"><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acde6292e719c80f93d3d1c344ab442cd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">SVF::LLVMModuleSet::modules</a></div><div class="ttdeci">std::vector< std::reference_wrapper< Module > > modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
1664
1657
|
</div><!-- fragment -->
|
|
1665
1658
|
</div>
|
|
1666
1659
|
</div>
|
|
@@ -1687,8 +1680,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1687
1680
|
</table>
|
|
1688
1681
|
</div><div class="memdoc">
|
|
1689
1682
|
|
|
1690
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
1691
|
-
<div class="fragment"><div class="line"><a name="
|
|
1683
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00096">96</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1684
|
+
<div class="fragment"><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#aaa23ad390e9148ba6302fea8d4595080">LLVMModuleSet</a>();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_aaa23ad390e9148ba6302fea8d4595080"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aaa23ad390e9148ba6302fea8d4595080">SVF::LLVMModuleSet::LLVMModuleSet</a></div><div class="ttdeci">LLVMModuleSet()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00074">LLVMModule.cpp:74</a></div></div>
|
|
1692
1685
|
<div class="ttc" id="classSVF_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#l00064">LLVMModule.h:64</a></div></div>
|
|
1693
1686
|
</div><!-- fragment -->
|
|
1694
1687
|
</div>
|
|
@@ -1711,8 +1704,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1711
1704
|
|
|
1712
1705
|
<p>Get LLVM Type. </p>
|
|
1713
1706
|
|
|
1714
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1715
|
-
<div class="fragment"><div class="line"><a name="
|
|
1707
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00968">968</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1708
|
+
<div class="fragment"><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> {</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  <span class="keywordflow">for</span>(LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.begin(), eit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  {</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  <span class="keywordflow">if</span> (it->second == T)</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="keywordflow">return</span> it->first;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  }</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"can't find the corresponding LLVM Type"</span>);</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  abort();</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> }</div><div class="ttc" id="classSVF_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#l00085">LLVMModule.h:85</a></div></div>
|
|
1716
1709
|
</div><!-- fragment -->
|
|
1717
1710
|
</div>
|
|
1718
1711
|
</div>
|
|
@@ -1740,8 +1733,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1740
1733
|
</table>
|
|
1741
1734
|
</div><div class="memdoc">
|
|
1742
1735
|
|
|
1743
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
1744
|
-
<div class="fragment"><div class="line"><a name="
|
|
1736
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00188">188</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1737
|
+
<div class="fragment"><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  SVFValue2LLVMValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVFValue2LLVMValue</a>.find(value);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  assert(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVFValue2LLVMValue</a>.end() && <span class="stringliteral">"can't find corresponding llvm value!"</span>);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="ttc" id="classSVF_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#l00084">LLVMModule.h:84</a></div></div>
|
|
1745
1738
|
</div><!-- fragment -->
|
|
1746
1739
|
</div>
|
|
1747
1740
|
</div>
|
|
@@ -1768,8 +1761,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1768
1761
|
</table>
|
|
1769
1762
|
</div><div class="memdoc">
|
|
1770
1763
|
|
|
1771
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
1772
|
-
<div class="fragment"><div class="line"><a name="
|
|
1764
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00307">307</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1765
|
+
<div class="fragment"><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">getModule</a>(0);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div><div class="ttc" id="classSVF_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>
|
|
1773
1766
|
</div><!-- fragment -->
|
|
1774
1767
|
</div>
|
|
1775
1768
|
</div>
|
|
@@ -1797,8 +1790,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1797
1790
|
</table>
|
|
1798
1791
|
</div><div class="memdoc">
|
|
1799
1792
|
|
|
1800
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
1801
|
-
<div class="fragment"><div class="line"><a name="
|
|
1793
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00131">131</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1794
|
+
<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> &<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad647d73d2e1bda61348eff658e32f481">getModuleRef</a>(idx);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ad647d73d2e1bda61348eff658e32f481"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad647d73d2e1bda61348eff658e32f481">SVF::LLVMModuleSet::getModuleRef</a></div><div class="ttdeci">Module & getModuleRef(u32_t idx) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00136">LLVMModule.h:136</a></div></div>
|
|
1802
1795
|
</div><!-- fragment -->
|
|
1803
1796
|
</div>
|
|
1804
1797
|
</div>
|
|
@@ -1825,8 +1818,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1825
1818
|
</table>
|
|
1826
1819
|
</div><div class="memdoc">
|
|
1827
1820
|
|
|
1828
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
1829
|
-
<div class="fragment"><div class="line"><a name="
|
|
1821
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00121">121</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1822
|
+
<div class="fragment"><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.size();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acde6292e719c80f93d3d1c344ab442cd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">SVF::LLVMModuleSet::modules</a></div><div class="ttdeci">std::vector< std::reference_wrapper< Module > > modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
1830
1823
|
</div><!-- fragment -->
|
|
1831
1824
|
</div>
|
|
1832
1825
|
</div>
|
|
@@ -1854,8 +1847,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1854
1847
|
</table>
|
|
1855
1848
|
</div><div class="memdoc">
|
|
1856
1849
|
|
|
1857
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
1858
|
-
<div class="fragment"><div class="line"><a name="
|
|
1850
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00136">136</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1851
|
+
<div class="fragment"><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  assert(idx < <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() && <span class="stringliteral">"Out of range."</span>);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>[idx];</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="ttc" id="classSVF_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>
|
|
1859
1852
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acde6292e719c80f93d3d1c344ab442cd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">SVF::LLVMModuleSet::modules</a></div><div class="ttdeci">std::vector< std::reference_wrapper< Module > > modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
1860
1853
|
</div><!-- fragment -->
|
|
1861
1854
|
</div>
|
|
@@ -1876,11 +1869,11 @@ Static Private Attributes</h2></td></tr>
|
|
|
1876
1869
|
</table>
|
|
1877
1870
|
</div><div class="memdoc">
|
|
1878
1871
|
|
|
1879
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1880
|
-
<div class="fragment"><div class="line"><a name="
|
|
1881
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5badf03aeb1ebda02bc186bbb58a892a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">SVF::LLVMModuleSet::addOtherConstantMap</a></div><div class="ttdeci">void addOtherConstantMap(const Constant *cons, SVFConstant *svfcons)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#
|
|
1872
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00909">909</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1873
|
+
<div class="fragment"><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> {</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  {</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  }</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  {</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>* svfoc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>(oc->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(oc->getType()));</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>->addConstant(svfoc);</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="keywordflow">return</span> svfoc;</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  }</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> }</div><div class="ttc" id="classSVF_1_1SVFConstant_html"><div class="ttname"><a href="classSVF_1_1SVFConstant.html">SVF::SVFConstant</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00763">SVFValue.h:763</a></div></div>
|
|
1874
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a5badf03aeb1ebda02bc186bbb58a892a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">SVF::LLVMModuleSet::addOtherConstantMap</a></div><div class="ttdeci">void addOtherConstantMap(const Constant *cons, SVFConstant *svfcons)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00175">LLVMModule.h:175</a></div></div>
|
|
1882
1875
|
<div class="ttc" id="classSVF_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#l00082">LLVMModule.h:82</a></div></div>
|
|
1883
|
-
<div class="ttc" id="classSVF_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#
|
|
1876
|
+
<div class="ttc" id="classSVF_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#l00982">LLVMModule.cpp:982</a></div></div>
|
|
1884
1877
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3e14bbb3ae0acc74775ac3233a84d379"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">std::unique_ptr< SVFModule > svfModule</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00066">LLVMModule.h:66</a></div></div>
|
|
1885
1878
|
</div><!-- fragment -->
|
|
1886
1879
|
</div>
|
|
@@ -1909,8 +1902,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1909
1902
|
</table>
|
|
1910
1903
|
</div><div class="memdoc">
|
|
1911
1904
|
|
|
1912
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
1913
|
-
<div class="fragment"><div class="line"><a name="
|
|
1905
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00216">216</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1906
|
+
<div class="fragment"><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  LLVMArgument2SVFArgumentMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a852524c71831d7b2da0e9b0b6b191480">LLVMArgument2SVFArgument</a>.find(arg);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  assert(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a852524c71831d7b2da0e9b0b6b191480">LLVMArgument2SVFArgument</a>.end() && <span class="stringliteral">"SVF Argument not found!"</span>);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a852524c71831d7b2da0e9b0b6b191480"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a852524c71831d7b2da0e9b0b6b191480">SVF::LLVMModuleSet::LLVMArgument2SVFArgument</a></div><div class="ttdeci">LLVMArgument2SVFArgumentMap LLVMArgument2SVFArgument</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00081">LLVMModule.h:81</a></div></div>
|
|
1914
1907
|
</div><!-- fragment -->
|
|
1915
1908
|
</div>
|
|
1916
1909
|
</div>
|
|
@@ -1938,8 +1931,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1938
1931
|
</table>
|
|
1939
1932
|
</div><div class="memdoc">
|
|
1940
1933
|
|
|
1941
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
1942
|
-
<div class="fragment"><div class="line"><a name="
|
|
1934
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00202">202</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1935
|
+
<div class="fragment"><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  LLVMBB2SVFBBMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0f9b36699b99dfcfe3c1588bfab6b97c">LLVMBB2SVFBB</a>.find(bb);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  assert(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a0f9b36699b99dfcfe3c1588bfab6b97c">LLVMBB2SVFBB</a>.end() && <span class="stringliteral">"SVF BasicBlock not found!"</span>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="ttc" id="classSVF_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#l00079">LLVMModule.h:79</a></div></div>
|
|
1943
1936
|
</div><!-- fragment -->
|
|
1944
1937
|
</div>
|
|
1945
1938
|
</div>
|
|
@@ -1960,17 +1953,17 @@ Static Private Attributes</h2></td></tr>
|
|
|
1960
1953
|
</div><div class="memdoc">
|
|
1961
1954
|
<p>bool true will be translated to -1 with getSExtValue, so call getZExtValue() if bitwidth = 1 </p>
|
|
1962
1955
|
|
|
1963
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
1964
|
-
<div class="fragment"><div class="line"><a name="
|
|
1956
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00873">873</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
1957
|
+
<div class="fragment"><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> {</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(cd);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  {</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  assert(SVFUtil::isa<SVFConstantData>(it->second) && <span class="stringliteral">"not a SVFConstantData type!"</span>);</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">return</span> SVFUtil::cast<SVFConstantData>(it->second);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  }</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  {</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>* svfcd = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* cint = SVFUtil::dyn_cast<ConstantInt>(cd))</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  {</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(cd->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint->getType()), cint->getZExtValue(),</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  cint->getBitWidth() == 1? cint->getZExtValue(): cint->getSExtValue());</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  }</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad49e4222ba46d9490b87a80df8b46800">ConstantFP</a>* cfp = SVFUtil::dyn_cast<ConstantFP>(cd))</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  {</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keywordtype">double</span> dval = 0;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="keywordflow">if</span>(cfp->isNormalFP() && (&cfp->getValueAPF().getSemantics()== &llvm::APFloatBase::IEEEdouble()))</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  dval = cfp->getValueAPF().convertToDouble();</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantFP.html">SVFConstantFP</a>(cd->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd->getType()), dval);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  }</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<ConstantPointerNull>(cd))</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantNullPtr.html">SVFConstantNullPtr</a>(cd->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd->getType()));</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<UndefValue>(cd))</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFBlackHoleValue.html">SVFBlackHoleValue</a>(cd->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd->getType()));</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>(cd->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd->getType()));</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>->addConstant(svfcd);</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="keywordflow">return</span> svfcd;</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  }</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span> }</div><div class="ttc" id="classSVF_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#l00883">SVFValue.h:883</a></div></div>
|
|
1965
1958
|
<div class="ttc" id="namespaceSVF_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#l00102">BasicTypes.h:102</a></div></div>
|
|
1966
1959
|
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00101">BasicTypes.h:101</a></div></div>
|
|
1967
1960
|
<div class="ttc" id="classSVF_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#l00856">SVFValue.h:856</a></div></div>
|
|
1968
1961
|
<div class="ttc" id="classSVF_1_1SVFConstantNullPtr_html"><div class="ttname"><a href="classSVF_1_1SVFConstantNullPtr.html">SVF::SVFConstantNullPtr</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00940">SVFValue.h:940</a></div></div>
|
|
1969
1962
|
<div class="ttc" id="classSVF_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#l00082">LLVMModule.h:82</a></div></div>
|
|
1970
|
-
<div class="ttc" id="classSVF_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#
|
|
1963
|
+
<div class="ttc" id="classSVF_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#l00982">LLVMModule.cpp:982</a></div></div>
|
|
1971
1964
|
<div class="ttc" id="classSVF_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#l00915">SVFValue.h:915</a></div></div>
|
|
1972
1965
|
<div class="ttc" id="classSVF_1_1SVFBlackHoleValue_html"><div class="ttname"><a href="classSVF_1_1SVFBlackHoleValue.html">SVF::SVFBlackHoleValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00959">SVFValue.h:959</a></div></div>
|
|
1973
|
-
<div class="ttc" id="classSVF_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#
|
|
1966
|
+
<div class="ttc" id="classSVF_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>
|
|
1974
1967
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3e14bbb3ae0acc74775ac3233a84d379"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">std::unique_ptr< SVFModule > svfModule</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00066">LLVMModule.h:66</a></div></div>
|
|
1975
1968
|
</div><!-- fragment -->
|
|
1976
1969
|
</div>
|
|
@@ -1999,8 +1992,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1999
1992
|
</table>
|
|
2000
1993
|
</div><div class="memdoc">
|
|
2001
1994
|
|
|
2002
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2003
|
-
<div class="fragment"><div class="line"><a name="
|
|
1995
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00195">195</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
1996
|
+
<div class="fragment"><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  LLVMFun2SVFFunMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fd7f0170bffa7c1b927cdb0de98fd15">LLVMFunc2SVFFunc</a>.find(fun);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  assert(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fd7f0170bffa7c1b927cdb0de98fd15">LLVMFunc2SVFFunc</a>.end() && <span class="stringliteral">"SVF Function not found!"</span>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="ttc" id="classSVF_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#l00078">LLVMModule.h:78</a></div></div>
|
|
2004
1997
|
</div><!-- fragment -->
|
|
2005
1998
|
</div>
|
|
2006
1999
|
</div>
|
|
@@ -2030,14 +2023,14 @@ Static Private Attributes</h2></td></tr>
|
|
|
2030
2023
|
|
|
2031
2024
|
<p>Get the corresponding Function based on its name. </p>
|
|
2032
2025
|
|
|
2033
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2034
|
-
<div class="fragment"><div class="line"><a name="
|
|
2026
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00237">237</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2027
|
+
<div class="fragment"><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i < <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>(); ++i)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">getModule</a>(i);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  fun = mod->getFunction(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">if</span> (fun)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="ttc" id="classSVF_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>
|
|
2035
2028
|
<div class="ttc" id="namespaceSVF_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#l00060">BasicTypes.h:60</a></div></div>
|
|
2036
2029
|
<div class="ttc" id="cJSON_8h_html_a25d22ecc7e656d2c59332072684e8766"><div class="ttname"><a href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a></div><div class="ttdeci">const char *const name</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00264">cJSON.h:264</a></div></div>
|
|
2037
|
-
<div class="ttc" id="classSVF_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#
|
|
2030
|
+
<div class="ttc" id="classSVF_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>
|
|
2038
2031
|
<div class="ttc" id="classSVF_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#l00064">LLVMModule.h:64</a></div></div>
|
|
2039
2032
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
|
|
2040
|
-
<div class="ttc" id="classSVF_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#
|
|
2033
|
+
<div class="ttc" id="classSVF_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>
|
|
2041
2034
|
<div class="ttc" id="CommandLine_8h_html_a2429346d37bd4c40889bd7c6d319d9da"><div class="ttname"><a href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="CommandLine_8h_source.html#l00018">CommandLine.h:18</a></div></div>
|
|
2042
2035
|
</div><!-- fragment -->
|
|
2043
2036
|
</div>
|
|
@@ -2066,8 +2059,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
2066
2059
|
</table>
|
|
2067
2060
|
</div><div class="memdoc">
|
|
2068
2061
|
|
|
2069
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2070
|
-
<div class="fragment"><div class="line"><a name="
|
|
2062
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00223">223</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2063
|
+
<div class="fragment"><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(g);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  assert(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end() && <span class="stringliteral">"SVF Global not found!"</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  assert(SVFUtil::isa<SVFGlobalValue>(it->second) && <span class="stringliteral">"not a SVFGlobal type!"</span>);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">return</span> SVFUtil::cast<SVFGlobalValue>(it->second);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="ttc" id="classSVF_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#l00082">LLVMModule.h:82</a></div></div>
|
|
2071
2064
|
</div><!-- fragment -->
|
|
2072
2065
|
</div>
|
|
2073
2066
|
</div>
|
|
@@ -2095,8 +2088,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
2095
2088
|
</table>
|
|
2096
2089
|
</div><div class="memdoc">
|
|
2097
2090
|
|
|
2098
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2099
|
-
<div class="fragment"><div class="line"><a name="
|
|
2091
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00209">209</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2092
|
+
<div class="fragment"><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  LLVMInst2SVFInstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a42439790c217254ce5404622b197b3d0">LLVMInst2SVFInst</a>.find(inst);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  assert(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a42439790c217254ce5404622b197b3d0">LLVMInst2SVFInst</a>.end() && <span class="stringliteral">"SVF Instruction not found!"</span>);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div><div class="ttc" id="classSVF_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#l00080">LLVMModule.h:80</a></div></div>
|
|
2100
2093
|
</div><!-- fragment -->
|
|
2101
2094
|
</div>
|
|
2102
2095
|
</div>
|
|
@@ -2123,8 +2116,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
2123
2116
|
</table>
|
|
2124
2117
|
</div><div class="memdoc">
|
|
2125
2118
|
|
|
2126
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2127
|
-
<div class="fragment"><div class="line"><a name="
|
|
2119
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00113">113</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2120
|
+
<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  assert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a> && <span class="stringliteral">"svfModule has not been built yet!"</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>.get();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3e14bbb3ae0acc74775ac3233a84d379"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">std::unique_ptr< SVFModule > svfModule</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00066">LLVMModule.h:66</a></div></div>
|
|
2128
2121
|
</div><!-- fragment -->
|
|
2129
2122
|
</div>
|
|
2130
2123
|
</div>
|
|
@@ -2144,11 +2137,11 @@ Static Private Attributes</h2></td></tr>
|
|
|
2144
2137
|
</table>
|
|
2145
2138
|
</div><div class="memdoc">
|
|
2146
2139
|
|
|
2147
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2148
|
-
<div class="fragment"><div class="line"><a name="
|
|
2149
|
-
<div class="ttc" id="classSVF_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#
|
|
2140
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00925">925</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2141
|
+
<div class="fragment"><div class="line"><a name="l00926"></a><span class="lineno"> 926</span> {</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  {</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  }</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="keywordflow">if</span>(SVFUtil::isa<MetadataAsValue>(ov))</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  svfov = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFMetadataAsValue.html">SVFMetadataAsValue</a>(ov->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov->getType()));</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  svfov = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>(ov->getName().str(), <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov->getType()));</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">svfModule</a>->addOtherValue(svfov);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="keywordflow">return</span> svfov;</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  }</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span> }</div><div class="ttc" id="classSVF_1_1SVFOtherValue_html"><div class="ttname"><a href="classSVF_1_1SVFOtherValue.html">SVF::SVFOtherValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00978">SVFValue.h:978</a></div></div>
|
|
2142
|
+
<div class="ttc" id="classSVF_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>
|
|
2150
2143
|
<div class="ttc" id="classSVF_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#l00995">SVFValue.h:995</a></div></div>
|
|
2151
|
-
<div class="ttc" id="classSVF_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#
|
|
2144
|
+
<div class="ttc" id="classSVF_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#l00982">LLVMModule.cpp:982</a></div></div>
|
|
2152
2145
|
<div class="ttc" id="classSVF_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#l00083">LLVMModule.h:83</a></div></div>
|
|
2153
2146
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3e14bbb3ae0acc74775ac3233a84d379"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3e14bbb3ae0acc74775ac3233a84d379">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">std::unique_ptr< SVFModule > svfModule</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00066">LLVMModule.h:66</a></div></div>
|
|
2154
2147
|
</div><!-- fragment -->
|
|
@@ -2174,14 +2167,14 @@ Static Private Attributes</h2></td></tr>
|
|
|
2174
2167
|
<p>Get or create <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> and typeinfo </p>
|
|
2175
2168
|
<p>TODO: set the void* to every element for now (imprecise) For example, [getPointerTo(): char -—> i8*] [getPointerTo(): int -—> i8*] [getPointerTo(): struct -—> i8*] </p>
|
|
2176
2169
|
|
|
2177
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2178
|
-
<div class="fragment"><div class="line"><a name="
|
|
2170
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00982">982</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2171
|
+
<div class="fragment"><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> {</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  assert(T);</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  <span class="keywordflow">if</span> (it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  {</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">addSVFTypeInfo</a>(T);</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(T);</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  svfType->setTypeInfo(stinfo);</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = PointerType::getInt8PtrTy(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>())->getPointerTo();</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  svfType->setPointerTo(SVFUtil::cast<SVFPointerType>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ptrTy)));</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <span class="keywordflow">return</span> svfType;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  }</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span> }</div><div class="ttc" id="classSVF_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#l01032">LLVMModule.cpp:1032</a></div></div>
|
|
2179
2172
|
<div class="ttc" id="namespaceSVF_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#l00072">BasicTypes.h:72</a></div></div>
|
|
2180
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ac1a9d20d62066ec4e181fad223669e32"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">SVF::LLVMModuleSet::getContext</a></div><div class="ttdeci">LLVMContext & getContext() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#
|
|
2181
|
-
<div class="ttc" id="classSVF_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#
|
|
2173
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ac1a9d20d62066ec4e181fad223669e32"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">SVF::LLVMModuleSet::getContext</a></div><div class="ttdeci">LLVMContext & getContext() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00312">LLVMModule.h:312</a></div></div>
|
|
2174
|
+
<div class="ttc" id="classSVF_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#l01001">LLVMModule.cpp:1001</a></div></div>
|
|
2182
2175
|
<div class="ttc" id="classSVF_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#l00233">SVFType.h:233</a></div></div>
|
|
2183
2176
|
<div class="ttc" id="classSVF_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#l00085">LLVMModule.h:85</a></div></div>
|
|
2184
|
-
<div class="ttc" id="classSVF_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#
|
|
2177
|
+
<div class="ttc" id="classSVF_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#l00982">LLVMModule.cpp:982</a></div></div>
|
|
2185
2178
|
<div class="ttc" id="classSVF_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#l00131">SVFType.h:131</a></div></div>
|
|
2186
2179
|
</div><!-- fragment -->
|
|
2187
2180
|
</div>
|
|
@@ -2202,22 +2195,22 @@ Static Private Attributes</h2></td></tr>
|
|
|
2202
2195
|
</table>
|
|
2203
2196
|
</div><div class="memdoc">
|
|
2204
2197
|
|
|
2205
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2206
|
-
<div class="fragment"><div class="line"><a name="
|
|
2207
|
-
<div class="ttc" id="classSVF_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#
|
|
2198
|
+
<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>
|
|
2199
|
+
<div class="fragment"><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> {</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = SVFUtil::dyn_cast<Function>(value))</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast<BasicBlock>(value))</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast<Instruction>(value))</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast<Argument>(value))</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* cons = SVFUtil::dyn_cast<Constant>(value))</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  {</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* cd = SVFUtil::dyn_cast<ConstantData>(cons))</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a>* glob = SVFUtil::dyn_cast<GlobalValue>(cons))</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  }</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3cbba2eb702a3481478b2590dfffa352"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">SVF::LLVMModuleSet::getSVFGlobalValue</a></div><div class="ttdeci">SVFGlobalValue * getSVFGlobalValue(const GlobalValue *g) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00223">LLVMModule.h:223</a></div></div>
|
|
2200
|
+
<div class="ttc" id="classSVF_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>
|
|
2208
2201
|
<div class="ttc" id="namespaceSVF_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#l00062">BasicTypes.h:62</a></div></div>
|
|
2209
|
-
<div class="ttc" id="classSVF_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#
|
|
2210
|
-
<div class="ttc" id="classSVF_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#
|
|
2211
|
-
<div class="ttc" id="classSVF_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#
|
|
2202
|
+
<div class="ttc" id="classSVF_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>
|
|
2203
|
+
<div class="ttc" id="classSVF_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#l00909">LLVMModule.cpp:909</a></div></div>
|
|
2204
|
+
<div class="ttc" id="classSVF_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>
|
|
2212
2205
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
|
|
2213
2206
|
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00063">BasicTypes.h:63</a></div></div>
|
|
2214
2207
|
<div class="ttc" id="namespaceSVF_html_a7332f8059ea95472dcc231de884a5768"><div class="ttname"><a href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">SVF::ConstantData</a></div><div class="ttdeci">llvm::ConstantData ConstantData</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00092">BasicTypes.h:92</a></div></div>
|
|
2215
2208
|
<div class="ttc" id="namespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00120">BasicTypes.h:120</a></div></div>
|
|
2216
2209
|
<div class="ttc" id="namespaceSVF_html_a67f3f86344f028cacfbeb08caaf7bb0f"><div class="ttname"><a href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">SVF::GlobalValue</a></div><div class="ttdeci">llvm::GlobalValue GlobalValue</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00064">BasicTypes.h:64</a></div></div>
|
|
2217
2210
|
<div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
|
|
2218
|
-
<div class="ttc" id="classSVF_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#
|
|
2219
|
-
<div class="ttc" id="classSVF_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#
|
|
2220
|
-
<div class="ttc" id="classSVF_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#
|
|
2211
|
+
<div class="ttc" id="classSVF_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#l00925">LLVMModule.cpp:925</a></div></div>
|
|
2212
|
+
<div class="ttc" id="classSVF_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#l00873">LLVMModule.cpp:873</a></div></div>
|
|
2213
|
+
<div class="ttc" id="classSVF_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>
|
|
2221
2214
|
</div><!-- fragment -->
|
|
2222
2215
|
</div>
|
|
2223
2216
|
</div>
|
|
@@ -2245,11 +2238,11 @@ Static Private Attributes</h2></td></tr>
|
|
|
2245
2238
|
</table>
|
|
2246
2239
|
</div><div class="memdoc">
|
|
2247
2240
|
|
|
2248
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2249
|
-
<div class="fragment"><div class="line"><a name="
|
|
2250
|
-
<div class="ttc" id="classSVF_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#
|
|
2241
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00268">268</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2242
|
+
<div class="fragment"><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">if</span>(fun->isDeclaration() && !<a class="code" href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">hasDefinition</a>(fun))</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* funDef = fun;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span>(fun->isDeclaration() && <a class="code" href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">hasDefinition</a>(fun))</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  funDef = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">getDefinition</a>(fun);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  FunDefToDeclsMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.find(funDef);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">return</span> it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>.end();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a377cefaad4b688ab6edf94ba4abe00ee"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">SVF::LLVMModuleSet::FunDefToDeclsMap</a></div><div class="ttdeci">FunDefToDeclsMapTy FunDefToDeclsMap</div><div class="ttdoc">Function definition to function declaration map. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00074">LLVMModule.h:74</a></div></div>
|
|
2243
|
+
<div class="ttc" id="classSVF_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>
|
|
2251
2244
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
|
|
2252
|
-
<div class="ttc" id="classSVF_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#
|
|
2245
|
+
<div class="ttc" id="classSVF_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>
|
|
2253
2246
|
</div><!-- fragment -->
|
|
2254
2247
|
</div>
|
|
2255
2248
|
</div>
|
|
@@ -2277,8 +2270,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
2277
2270
|
</table>
|
|
2278
2271
|
</div><div class="memdoc">
|
|
2279
2272
|
|
|
2280
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2281
|
-
<div class="fragment"><div class="line"><a name="
|
|
2273
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00253">253</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2274
|
+
<div class="fragment"><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  assert(fun->isDeclaration() && <span class="stringliteral">"not a function declaration?"</span>);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  FunDeclToDefMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.find(fun);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>.end();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_aee80b29e5246e3eaa0e30e165346101f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">SVF::LLVMModuleSet::FunDeclToDefMap</a></div><div class="ttdeci">FunDeclToDefMapTy FunDeclToDefMap</div><div class="ttdoc">Function declaration to function definition map. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00072">LLVMModule.h:72</a></div></div>
|
|
2282
2275
|
</div><!-- fragment -->
|
|
2283
2276
|
</div>
|
|
2284
2277
|
</div>
|
|
@@ -2308,8 +2301,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
2308
2301
|
|
|
2309
2302
|
<p>Global to rep. </p>
|
|
2310
2303
|
|
|
2311
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2312
|
-
<div class="fragment"><div class="line"><a name="
|
|
2304
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00293">293</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2305
|
+
<div class="fragment"><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  GlobalDefToRepMapTy::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.find(val);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">return</span> it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>.end();</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="ttc" id="classSVF_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#l00076">LLVMModule.h:76</a></div></div>
|
|
2313
2306
|
</div><!-- fragment -->
|
|
2314
2307
|
</div>
|
|
2315
2308
|
</div>
|
|
@@ -2347,8 +2340,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
2347
2340
|
</table>
|
|
2348
2341
|
</div><div class="memdoc">
|
|
2349
2342
|
|
|
2350
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2351
|
-
<div class="fragment"><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">//process and stored dt & df</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a> df;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  dt.recalculate(const_cast<Function&>(*fun));</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  df.analyze(dt);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a> loopInfo = <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>(dt);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a> pdt = <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>(const_cast<Function&>(*fun));</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = svffun->getLoopAndDomInfo();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFBasicBlock*,Set<const SVFBasicBlock*></a>> & dfBBsMap = ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae37546be7304c66b4eca2654d995eaa7">getDomFrontierMap</a>();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">for</span> (DominanceFrontierBase::const_iterator dfIter = df.begin(), eDfIter = df.end(); dfIter != eDfIter; dfIter++)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* keyBB = dfIter->first;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keyword">const</span> std::set<BasicBlock* >& domSet = dfIter->second;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const SVFBasicBlock*></a>& valueBasicBlocks = dfBBsMap[<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(keyBB)];</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bbValue:domSet)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  valueBasicBlocks.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bbValue));</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  std::vector<const SVFBasicBlock*> reachableBBs;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a7653217714dfac2d92f1307ce8b74ec7">LLVMUtil::getFunReachableBBs</a>(fun, reachableBBs);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">setReachableBBs</a>(reachableBBs);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">for</span> (Function::const_iterator bit = fun->begin(), ebit = fun->end(); bit != ebit; ++bit)</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &*bit;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svf_bb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a> *dtNode = dt.getNode(const_cast<BasicBlock*>(bb)))</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  DomTreeNode::iterator DI = dtNode->begin();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">if</span> (DI != dtNode->end())</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">for</span> (DomTreeNode::iterator DI = dtNode->begin(), DE = dtNode->end(); DI != DE; ++DI)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* dombb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>((*DI)->getBlock());</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a2fc6b806a436d8fa65863f6cef99e716">getDomTreeMap</a>()[svf_bb].insert(dombb);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a2fc6b806a436d8fa65863f6cef99e716">getDomTreeMap</a>()[svf_bb] = <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const SVFBasicBlock* ></a>();</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a> * pdtNode = pdt.getNode(const_cast<BasicBlock*>(bb)))</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  DomTreeNode::iterator DI = pdtNode->begin();</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">if</span> (DI != pdtNode->end())</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">for</span> (DomTreeNode::iterator DI = pdtNode->begin(), DE = pdtNode->end(); DI != DE; ++DI)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* dombb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>((*DI)->getBlock());</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad07f95e790b5c3a50c864155aa20a083">getPostDomTreeMap</a>()[svf_bb].insert(dombb);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad07f95e790b5c3a50c864155aa20a083">getPostDomTreeMap</a>()[svf_bb] = <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const SVFBasicBlock* ></a>();</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *loop = loopInfo.getLoopFor(bb))</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* loopBlock:loop->getBlocks())</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* loopbb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(loopBlock);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">addToBB2LoopMap</a>(svf_bb,loopbb);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> }</div><div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a7653217714dfac2d92f1307ce8b74ec7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a7653217714dfac2d92f1307ce8b74ec7">SVF::LLVMUtil::getFunReachableBBs</a></div><div class="ttdeci">void getFunReachableBBs(const Function *svfFun, std::vector< const SVFBasicBlock *> &bbs)</div><div class="ttdoc">Get reachable basic block from function entry. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00062">LLVMUtil.cpp:62</a></div></div>
|
|
2343
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00287">287</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2344
|
+
<div class="fragment"><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">//process and stored dt & df</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a> df;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  dt.recalculate(const_cast<Function&>(*fun));</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  df.analyze(dt);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a> loopInfo = <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>(dt);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a> pdt = <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>(const_cast<Function&>(*fun));</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = svffun->getLoopAndDomInfo();</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFBasicBlock*,Set<const SVFBasicBlock*></a>> & dfBBsMap = ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae37546be7304c66b4eca2654d995eaa7">getDomFrontierMap</a>();</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">for</span> (DominanceFrontierBase::const_iterator dfIter = df.begin(), eDfIter = df.end(); dfIter != eDfIter; dfIter++)</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* keyBB = dfIter->first;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keyword">const</span> std::set<BasicBlock* >& domSet = dfIter->second;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const SVFBasicBlock*></a>& valueBasicBlocks = dfBBsMap[<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(keyBB)];</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bbValue:domSet)</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  valueBasicBlocks.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bbValue));</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  std::vector<const SVFBasicBlock*> reachableBBs;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a7653217714dfac2d92f1307ce8b74ec7">LLVMUtil::getFunReachableBBs</a>(fun, reachableBBs);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">setReachableBBs</a>(reachableBBs);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">for</span> (Function::const_iterator bit = fun->begin(), ebit = fun->end(); bit != ebit; ++bit)</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &*bit;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svf_bb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a> *dtNode = dt.getNode(const_cast<BasicBlock*>(bb)))</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  DomTreeNode::iterator DI = dtNode->begin();</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">if</span> (DI != dtNode->end())</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">for</span> (DomTreeNode::iterator DI = dtNode->begin(), DE = dtNode->end(); DI != DE; ++DI)</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* dombb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>((*DI)->getBlock());</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a2fc6b806a436d8fa65863f6cef99e716">getDomTreeMap</a>()[svf_bb].insert(dombb);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a2fc6b806a436d8fa65863f6cef99e716">getDomTreeMap</a>()[svf_bb] = <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const SVFBasicBlock* ></a>();</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a> * pdtNode = pdt.getNode(const_cast<BasicBlock*>(bb)))</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  DomTreeNode::iterator DI = pdtNode->begin();</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">if</span> (DI != pdtNode->end())</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">for</span> (DomTreeNode::iterator DI = pdtNode->begin(), DE = pdtNode->end(); DI != DE; ++DI)</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* dombb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>((*DI)->getBlock());</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad07f95e790b5c3a50c864155aa20a083">getPostDomTreeMap</a>()[svf_bb].insert(dombb);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad07f95e790b5c3a50c864155aa20a083">getPostDomTreeMap</a>()[svf_bb] = <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const SVFBasicBlock* ></a>();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *loop = loopInfo.getLoopFor(bb))</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* loopBlock:loop->getBlocks())</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* loopbb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(loopBlock);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">addToBB2LoopMap</a>(svf_bb,loopbb);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> }</div><div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a7653217714dfac2d92f1307ce8b74ec7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a7653217714dfac2d92f1307ce8b74ec7">SVF::LLVMUtil::getFunReachableBBs</a></div><div class="ttdeci">void getFunReachableBBs(const Function *svfFun, std::vector< const SVFBasicBlock *> &bbs)</div><div class="ttdoc">Get reachable basic block from function entry. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00062">LLVMUtil.cpp:62</a></div></div>
|
|
2352
2345
|
<div class="ttc" id="namespaceSVF_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#l00062">BasicTypes.h:62</a></div></div>
|
|
2353
2346
|
<div class="ttc" id="classSVF_1_1SVFLoopAndDomInfo_html_ad07f95e790b5c3a50c864155aa20a083"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#ad07f95e790b5c3a50c864155aa20a083">SVF::SVFLoopAndDomInfo::getPostDomTreeMap</a></div><div class="ttdeci">const Map< const SVFBasicBlock *, BBSet > & getPostDomTreeMap() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00103">SVFValue.h:103</a></div></div>
|
|
2354
2347
|
<div class="ttc" id="namespaceSVF_html_a77e088bfe47c0b0ddcbbe0693dec6fe5"><div class="ttname"><a href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">SVF::LoopInfo</a></div><div class="ttdeci">llvm::LoopInfo LoopInfo</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00116">BasicTypes.h:116</a></div></div>
|
|
@@ -2360,7 +2353,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
2360
2353
|
<div class="ttc" id="classSVF_1_1SVFLoopAndDomInfo_html_ae37546be7304c66b4eca2654d995eaa7"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#ae37546be7304c66b4eca2654d995eaa7">SVF::SVFLoopAndDomInfo::getDomFrontierMap</a></div><div class="ttdeci">const Map< const SVFBasicBlock *, BBSet > & getDomFrontierMap() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00070">SVFValue.h:70</a></div></div>
|
|
2361
2354
|
<div class="ttc" id="classSVF_1_1SVFLoopAndDomInfo_html_a2fc6b806a436d8fa65863f6cef99e716"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#a2fc6b806a436d8fa65863f6cef99e716">SVF::SVFLoopAndDomInfo::getDomTreeMap</a></div><div class="ttdeci">Map< const SVFBasicBlock *, BBSet > & getDomTreeMap()</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00113">SVFValue.h:113</a></div></div>
|
|
2362
2355
|
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00094">SVFType.h:94</a></div></div>
|
|
2363
|
-
<div class="ttc" id="classSVF_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#
|
|
2356
|
+
<div class="ttc" id="classSVF_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>
|
|
2364
2357
|
<div class="ttc" id="namespaceSVF_html_abf85e29310b2e4df8925d00a5c081314"><div class="ttname"><a href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">SVF::Loop</a></div><div class="ttdeci">llvm::Loop Loop</div><div class="ttdoc">LLVM Loop. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00115">BasicTypes.h:115</a></div></div>
|
|
2365
2358
|
<div class="ttc" id="classSVF_1_1SVFLoopAndDomInfo_html_acc409e328f641a2c9512beeb727f58c7"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">SVF::SVFLoopAndDomInfo::setReachableBBs</a></div><div class="ttdeci">void setReachableBBs(BBList &bbs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00133">SVFValue.h:133</a></div></div>
|
|
2366
2359
|
<div class="ttc" id="namespaceSVF_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#l00108">BasicTypes.h:108</a></div></div>
|
|
@@ -2393,8 +2386,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
2393
2386
|
</table>
|
|
2394
2387
|
</div><div class="memdoc">
|
|
2395
2388
|
|
|
2396
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2397
|
-
<div class="fragment"><div class="line"><a name="
|
|
2389
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00243">243</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2390
|
+
<div class="fragment"><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">for</span> (Function::const_iterator bit = func->begin(), ebit = func->end(); bit != ebit; ++bit)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &*bit;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfbb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(bb); succ_it != succ_end(bb); succ_it++)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svf_scc_bb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(*succ_it);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  svfbb-><a class="code" href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">addSuccBasicBlock</a>(svf_scc_bb);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> pred_it = pred_begin(bb); pred_it != pred_end(bb); pred_it++)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svf_pred_bb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(*pred_it);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  svfbb-><a class="code" href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">addPredBasicBlock</a>(svf_pred_bb);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator iit = bb->begin(), eiit = bb->end(); iit != eiit; ++iit)</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &*iit;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast<CallBase>(inst))</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfinst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(call);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>* svfcall = SVFUtil::cast<SVFCallInst>(svfinst);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* callee = <a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(call->getCalledOperand()->stripPointerCasts());</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  svfcall-><a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(callee);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>* virtualCall = SVFUtil::dyn_cast<SVFVirtualCallInst>(svfcall))</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  virtualCall->setVtablePtr(<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(<a class="code" href="namespaceSVF_1_1cppUtil.html#a374e7c0b161a77f4d693e13b99ed6283">cppUtil::getVCallVtblPtr</a>(call)));</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  virtualCall->setFunIdxInVtable(<a class="code" href="namespaceSVF_1_1cppUtil.html#a279fa78f7a2e45b458a0358de9c061b8">cppUtil::getVCallIdx</a>(call));</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  virtualCall->setFunNameOfVirtualCall(<a class="code" href="namespaceSVF_1_1cppUtil.html#a8f5b8d8f99995821c81ccc8f7781c67e">cppUtil::getFunNameOfVCallSite</a>(call));</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < call->arg_size(); i++)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfval = <a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(call->getArgOperand(i));</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  svfcall-><a class="code" href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">addArgument</a>(svfval);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3b2ca48c72fba877c6cb3d52e23704e3">LLVMUtil::getNextInsts</a>(inst, <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst)->getSuccInstructions());</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae9ddfd95ec4a36537f582acad0262e70">LLVMUtil::getPrevInsts</a>(inst, <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst)->getPredInstructions());</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> }</div><div class="ttc" id="classSVF_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#l00570">SVFValue.h:570</a></div></div>
|
|
2398
2391
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a374e7c0b161a77f4d693e13b99ed6283"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a374e7c0b161a77f4d693e13b99ed6283">SVF::cppUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00381">CPPUtil.cpp:381</a></div></div>
|
|
2399
2392
|
<div class="ttc" id="namespaceSVF_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#l00062">BasicTypes.h:62</a></div></div>
|
|
2400
2393
|
<div class="ttc" id="classSVF_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#l00650">SVFValue.h:650</a></div></div>
|
|
@@ -2405,7 +2398,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
2405
2398
|
<div class="ttc" id="classSVF_1_1SVFCallInst_html"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html">SVF::SVFCallInst</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00635">SVFValue.h:635</a></div></div>
|
|
2406
2399
|
<div class="ttc" id="classSVF_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#l00646">SVFValue.h:646</a></div></div>
|
|
2407
2400
|
<div class="ttc" id="classSVF_1_1SVFBasicBlock_html_abfe3a1ce5fa364d9db7cd2d0e6a144ff"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">SVF::SVFBasicBlock::addSuccBasicBlock</a></div><div class="ttdeci">void addSuccBasicBlock(const SVFBasicBlock *succ)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00491">SVFValue.h:491</a></div></div>
|
|
2408
|
-
<div class="ttc" id="classSVF_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#
|
|
2401
|
+
<div class="ttc" id="classSVF_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>
|
|
2409
2402
|
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00063">BasicTypes.h:63</a></div></div>
|
|
2410
2403
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a279fa78f7a2e45b458a0358de9c061b8"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a279fa78f7a2e45b458a0358de9c061b8">SVF::cppUtil::getVCallIdx</a></div><div class="ttdeci">s32_t getVCallIdx(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00392">CPPUtil.cpp:392</a></div></div>
|
|
2411
2404
|
<div class="ttc" id="classSVF_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#l00496">SVFValue.h:496</a></div></div>
|
|
@@ -2415,8 +2408,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
2415
2408
|
<div class="ttc" id="classSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00471">SVFValue.h:471</a></div></div>
|
|
2416
2409
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_ae9ddfd95ec4a36537f582acad0262e70"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae9ddfd95ec4a36537f582acad0262e70">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector< const SVFInstruction *> &instList)</div><div class="ttdoc">Get the previous instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00300">LLVMUtil.cpp:300</a></div></div>
|
|
2417
2410
|
<div class="ttc" id="namespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00121">BasicTypes.h:121</a></div></div>
|
|
2418
|
-
<div class="ttc" id="classSVF_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#
|
|
2419
|
-
<div class="ttc" id="classSVF_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#
|
|
2411
|
+
<div class="ttc" id="classSVF_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#l00945">LLVMModule.cpp:945</a></div></div>
|
|
2412
|
+
<div class="ttc" id="classSVF_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>
|
|
2420
2413
|
</div><!-- fragment -->
|
|
2421
2414
|
</div>
|
|
2422
2415
|
</div>
|
|
@@ -2444,14 +2437,14 @@ Static Private Attributes</h2></td></tr>
|
|
|
2444
2437
|
</div><div class="memdoc">
|
|
2445
2438
|
<p>Function </p>
|
|
2446
2439
|
|
|
2447
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2448
|
-
<div class="fragment"><div class="line"><a name="
|
|
2440
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00224">224</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2441
|
+
<div class="fragment"><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">for</span> (Module::iterator it = mod.begin(), eit = mod.end(); it != eit; ++it)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* f = &*it;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(f);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002">initSVFBasicBlock</a>(f);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun) == <span class="keyword">false</span>)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">initDomTree</a>(svffun, f);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> }</div><div class="ttc" id="classSVF_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>
|
|
2449
2442
|
<div class="ttc" id="namespaceSVF_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#l00060">BasicTypes.h:60</a></div></div>
|
|
2450
2443
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00257">SVFValue.h:257</a></div></div>
|
|
2451
2444
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
|
|
2452
2445
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acde6292e719c80f93d3d1c344ab442cd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">SVF::LLVMModuleSet::modules</a></div><div class="ttdeci">std::vector< std::reference_wrapper< Module > > modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
2453
|
-
<div class="ttc" id="classSVF_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#
|
|
2454
|
-
<div class="ttc" id="classSVF_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#
|
|
2446
|
+
<div class="ttc" id="classSVF_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#l00243">LLVMModule.cpp:243</a></div></div>
|
|
2447
|
+
<div class="ttc" id="classSVF_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#l00287">LLVMModule.cpp:287</a></div></div>
|
|
2455
2448
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00295">SVFUtil.h:295</a></div></div>
|
|
2456
2449
|
</div><!-- fragment -->
|
|
2457
2450
|
</div>
|
|
@@ -2480,8 +2473,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
2480
2473
|
</table>
|
|
2481
2474
|
</div><div class="memdoc">
|
|
2482
2475
|
|
|
2483
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2484
|
-
<div class="fragment"><div class="line"><a name="
|
|
2476
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00409">409</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2477
|
+
<div class="fragment"><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="comment">// We read SVFIR from LLVM IR</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a53f783c80f368bcdca6c7620229d6f8e">Options::Graphtxt</a>().<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>())</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">if</span>(moduleNameVec.empty())</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"no LLVM bc file is found!\n"</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  exit(0);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">//assert(!moduleNameVec.empty() && "no LLVM bc file is found!");</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <a class="code" href="classSVF_1_1SVFModule.html#ac630e9f18a239ac6b3b88d05e64140c5">SVFModule::setPagFromTXT</a>(<a class="code" href="classSVF_1_1Options.html#a53f783c80f368bcdca6c7620229d6f8e">Options::Graphtxt</a>());</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="comment">//</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="comment">// To avoid the following type bugs (t1 != t3) when parsing multiple modules,</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="comment">// We should use only one LLVMContext object for multiple modules in the same thread.</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">// No such problem if only one module is processed by SVF.</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="comment">// ------------------------------------------------------------------</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="comment">// LLVMContext ctxa,ctxb;</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="comment">// IntegerType * t1 = IntegerType::get(ctxa,32);</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="comment">// IntegerType * t2 = IntegerType::get(ctxa,32);</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="comment">// assert(t1 == t2);</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="comment">// IntegerType * t3 = IntegerType::get(ctxb,32);</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="comment">// IntegerType * t4 = IntegerType::get(ctxb,32);</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="comment">// assert(t3 == t4);</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="comment">// assert(t1 != t3);</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="comment">// ------------------------------------------------------------------</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="comment">//</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> = std::make_unique<LLVMContext>();</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> </div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& moduleName : moduleNameVec)</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(moduleName))</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"not an IR file: "</span> << moduleName << std::endl;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  abort();</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  }</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  std::unique_ptr<Module> mod = parseIRFile(moduleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  {</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"load module: "</span> << moduleName << <span class="stringliteral">"failed!!\n\n"</span>;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  Err.print(<span class="stringliteral">"SVFModuleLoader"</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  abort();</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(*mod);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">owned_modules</a>.emplace_back(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(mod));</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> }</div><div class="ttc" id="namespaceSVF_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#l00066">BasicTypes.h:66</a></div></div>
|
|
2485
2478
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00396">LLVMUtil.cpp:396</a></div></div>
|
|
2486
2479
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a72502f7f536418621485e90ab98c2016"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVF::SVFUtil::move</a></div><div class="ttdeci">constexpr std::remove_reference< T >::type && move(T &&t) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00657">SVFUtil.h:657</a></div></div>
|
|
2487
2480
|
<div class="ttc" id="classSVF_1_1Options_html_a53f783c80f368bcdca6c7620229d6f8e"><div class="ttname"><a href="classSVF_1_1Options.html#a53f783c80f368bcdca6c7620229d6f8e">SVF::Options::Graphtxt</a></div><div class="ttdeci">static const Option< std::string > Graphtxt</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00211">Options.h:211</a></div></div>
|
|
@@ -2490,7 +2483,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
2490
2483
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ad06a92bf8bc556de742e0ffdf79ffafe"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">SVF::LLVMModuleSet::cxts</a></div><div class="ttdeci">std::unique_ptr< LLVMContext > cxts</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00067">LLVMModule.h:67</a></div></div>
|
|
2491
2484
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acde6292e719c80f93d3d1c344ab442cd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">SVF::LLVMModuleSet::modules</a></div><div class="ttdeci">std::vector< std::reference_wrapper< Module > > modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
2492
2485
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ae365189769640adb919a23c36978e5e2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">SVF::LLVMModuleSet::owned_modules</a></div><div class="ttdeci">std::vector< std::unique_ptr< Module > > owned_modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00068">LLVMModule.h:68</a></div></div>
|
|
2493
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ae19e38054c55d5822dfc83a12f12aa60"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">SVF::LLVMModuleSet::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#
|
|
2486
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ae19e38054c55d5822dfc83a12f12aa60"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">SVF::LLVMModuleSet::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00318">LLVMModule.h:318</a></div></div>
|
|
2494
2487
|
<div class="ttc" id="classSVF_1_1SVFModule_html_ac630e9f18a239ac6b3b88d05e64140c5"><div class="ttname"><a href="classSVF_1_1SVFModule.html#ac630e9f18a239ac6b3b88d05e64140c5">SVF::SVFModule::setPagFromTXT</a></div><div class="ttdeci">static void setPagFromTXT(std::string txt)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00079">SVFModule.h:79</a></div></div>
|
|
2495
2488
|
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
2496
2489
|
</div><!-- fragment -->
|
|
@@ -2524,11 +2517,11 @@ Static Private Attributes</h2></td></tr>
|
|
|
2524
2517
|
<p><a class="el" href="classSVF_1_1BreakConstantGEPs.html">BreakConstantGEPs</a> Pass</p>
|
|
2525
2518
|
<p><a class="el" href="classSVF_1_1MergeFunctionRets.html">MergeFunctionRets</a> Pass </p>
|
|
2526
2519
|
|
|
2527
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2528
|
-
<div class="fragment"><div class="line"><a name="
|
|
2520
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00365">365</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2521
|
+
<div class="fragment"><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  std::unique_ptr<BreakConstantGEPs> p1 = std::make_unique<BreakConstantGEPs>();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  p1->runOnModule(M);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  std::unique_ptr<UnifyFunctionExitNodes> p2 =</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  std::make_unique<UnifyFunctionExitNodes>();</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> F = M.begin(), E = M.end(); F != E; ++F)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &fun = *F;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">if</span> (fun.isDeclaration())</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  p2->runOnFunction(fun);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> }</div><div class="ttc" id="namespaceSVF_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#l00060">BasicTypes.h:60</a></div></div>
|
|
2529
2522
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
|
|
2530
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#
|
|
2531
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a4091b12bdfe4423d8114612a199bc480"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">SVF::LLVMModuleSet::getLLVMModules</a></div><div class="ttdeci">const std::vector< std::reference_wrapper< Module > > & getLLVMModules() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#
|
|
2523
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00096">LLVMModule.h:96</a></div></div>
|
|
2524
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a4091b12bdfe4423d8114612a199bc480"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">SVF::LLVMModuleSet::getLLVMModules</a></div><div class="ttdeci">const std::vector< std::reference_wrapper< Module > > & getLLVMModules() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00126">LLVMModule.h:126</a></div></div>
|
|
2532
2525
|
</div><!-- fragment -->
|
|
2533
2526
|
</div>
|
|
2534
2527
|
</div>
|
|
@@ -2548,13 +2541,13 @@ Static Private Attributes</h2></td></tr>
|
|
|
2548
2541
|
</table>
|
|
2549
2542
|
</div><div class="memdoc">
|
|
2550
2543
|
|
|
2551
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2552
|
-
<div class="fragment"><div class="line"><a name="
|
|
2553
|
-
<div class="ttc" id="classSVF_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#
|
|
2554
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ad5ef9421d501b2747d4fb31d4189b53f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad5ef9421d501b2747d4fb31d4189b53f">SVF::LLVMModuleSet::dumpModulesToFile</a></div><div class="ttdeci">void dumpModulesToFile(const std::string suffix)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
2555
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a298966366b02d0a34f409c2c77da3789"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">SVF::LLVMModuleSet::loadModules</a></div><div class="ttdeci">void loadModules(const std::vector< std::string > &moduleNameVec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
2556
|
-
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a14b0b55d397d6f8a5dfe3b574021f801"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a14b0b55d397d6f8a5dfe3b574021f801">SVF::LLVMModuleSet::preProcessed</a></div><div class="ttdeci">bool preProcessed</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#
|
|
2557
|
-
<div class="ttc" id="classSVF_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#
|
|
2544
|
+
<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>
|
|
2545
|
+
<div class="fragment"><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a>(moduleNameVec);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> </div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> preProcessSuffix = <span class="stringliteral">".pre.bc"</span>;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="comment">// Get the existing module names, remove old extention, add preProcessSuffix</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < moduleNameVec.size(); i++)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lastIndex = moduleNameVec[i].find_last_of(<span class="stringliteral">"."</span>);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> rawName = moduleNameVec[i].substr(0, lastIndex);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  moduleNameVec[i] = (rawName + preProcessSuffix);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad5ef9421d501b2747d4fb31d4189b53f">dumpModulesToFile</a>(preProcessSuffix);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a14b0b55d397d6f8a5dfe3b574021f801">preProcessed</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">releaseLLVMModuleSet</a>();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> }</div><div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
|
|
2546
|
+
<div class="ttc" id="classSVF_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#l00103">LLVMModule.h:103</a></div></div>
|
|
2547
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ad5ef9421d501b2747d4fb31d4189b53f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad5ef9421d501b2747d4fb31d4189b53f">SVF::LLVMModuleSet::dumpModulesToFile</a></div><div class="ttdeci">void dumpModulesToFile(const std::string suffix)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00822">LLVMModule.cpp:822</a></div></div>
|
|
2548
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a298966366b02d0a34f409c2c77da3789"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">SVF::LLVMModuleSet::loadModules</a></div><div class="ttdeci">void loadModules(const std::vector< std::string > &moduleNameVec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00409">LLVMModule.cpp:409</a></div></div>
|
|
2549
|
+
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a14b0b55d397d6f8a5dfe3b574021f801"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a14b0b55d397d6f8a5dfe3b574021f801">SVF::LLVMModuleSet::preProcessed</a></div><div class="ttdeci">bool preProcessed</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00354">LLVMModule.h:354</a></div></div>
|
|
2550
|
+
<div class="ttc" id="classSVF_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#l00365">LLVMModule.cpp:365</a></div></div>
|
|
2558
2551
|
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
2559
2552
|
</div><!-- fragment -->
|
|
2560
2553
|
</div>
|
|
@@ -2582,8 +2575,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
2582
2575
|
</table>
|
|
2583
2576
|
</div><div class="memdoc">
|
|
2584
2577
|
|
|
2585
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
2586
|
-
<div class="fragment"><div class="line"><a name="
|
|
2578
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00103">103</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
2579
|
+
<div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac59b07cafcbacc950eefea4082425b63">llvmModuleSet</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="ttc" id="classSVF_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#l00064">LLVMModule.h:64</a></div></div>
|
|
2587
2580
|
</div><!-- fragment -->
|
|
2588
2581
|
</div>
|
|
2589
2582
|
</div>
|
|
@@ -2621,9 +2614,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
2621
2614
|
</table>
|
|
2622
2615
|
</div><div class="memdoc">
|
|
2623
2616
|
|
|
2624
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#
|
|
2625
|
-
<div class="fragment"><div class="line"><a name="
|
|
2626
|
-
<div class="ttc" id="classSVF_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#
|
|
2617
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00847">847</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
|
|
2618
|
+
<div class="fragment"><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> {</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVFValue2LLVMValue</a>[svfvalue] = val;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> </div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">LLVMUtil::isPtrInUncalledFunction</a>(val))</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  svfvalue->setPtrInUncalledFunction();</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  svfvalue->setConstDataOrAggData();</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> </div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* glob = SVFUtil::dyn_cast<SVFGlobalValue>(svfvalue))</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  {</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* llvmVal = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">LLVMUtil::getGlobalRep</a>(val);</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  assert(SVFUtil::isa<GlobalValue>(llvmVal) && <span class="stringliteral">"not a GlobalValue?"</span>);</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  glob->setDefGlobalForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(SVFUtil::cast<GlobalValue>(llvmVal)));</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  }</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = SVFUtil::dyn_cast<SVFFunction>(svfvalue))</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  {</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::cast<Function>(val);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  svffun->setIsNotRet(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">LLVMUtil::functionDoesNotRet</a>(func));</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  svffun->setIsUncalledFunction(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">LLVMUtil::isUncalledFunction</a>(func));</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  svffun->setDefFunForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(func)));</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  }</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> </div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  svfvalue->setSourceLoc(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(val));</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a3cbba2eb702a3481478b2590dfffa352"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">SVF::LLVMModuleSet::getSVFGlobalValue</a></div><div class="ttdeci">SVFGlobalValue * getSVFGlobalValue(const GlobalValue *g) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00223">LLVMModule.h:223</a></div></div>
|
|
2619
|
+
<div class="ttc" id="classSVF_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>
|
|
2627
2620
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00257">SVFValue.h:257</a></div></div>
|
|
2628
2621
|
<div class="ttc" id="namespaceSVF_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#l00384">LLVMUtil.h:384</a></div></div>
|
|
2629
2622
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a8a77403306e97ab4cb31a56d38bba5be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">SVF::LLVMUtil::isConstDataOrAggData</a></div><div class="ttdeci">bool isConstDataOrAggData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00374">LLVMUtil.h:374</a></div></div>
|
|
@@ -3004,7 +2997,31 @@ Static Private Attributes</h2></td></tr>
|
|
|
3004
2997
|
</table>
|
|
3005
2998
|
</div><div class="memdoc">
|
|
3006
2999
|
|
|
3007
|
-
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#
|
|
3000
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00354">354</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
3001
|
+
|
|
3002
|
+
</div>
|
|
3003
|
+
</div>
|
|
3004
|
+
<a id="ad13302dd3e5585e8feba4b0cb31991a2"></a>
|
|
3005
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ad13302dd3e5585e8feba4b0cb31991a2">◆ </a></span>StInfos</h2>
|
|
3006
|
+
|
|
3007
|
+
<div class="memitem">
|
|
3008
|
+
<div class="memproto">
|
|
3009
|
+
<table class="mlabels">
|
|
3010
|
+
<tr>
|
|
3011
|
+
<td class="mlabels-left">
|
|
3012
|
+
<table class="memname">
|
|
3013
|
+
<tr>
|
|
3014
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a><const <a class="el" href="classSVF_1_1StInfo.html">StInfo</a>*> SVF::LLVMModuleSet::StInfos</td>
|
|
3015
|
+
</tr>
|
|
3016
|
+
</table>
|
|
3017
|
+
</td>
|
|
3018
|
+
<td class="mlabels-right">
|
|
3019
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
3020
|
+
</tr>
|
|
3021
|
+
</table>
|
|
3022
|
+
</div><div class="memdoc">
|
|
3023
|
+
|
|
3024
|
+
<p class="definition">Definition at line <a class="el" href="LLVMModule_8h_source.html#l00087">87</a> of file <a class="el" href="LLVMModule_8h_source.html">LLVMModule.h</a>.</p>
|
|
3008
3025
|
|
|
3009
3026
|
</div>
|
|
3010
3027
|
</div>
|
|
@@ -3090,7 +3107,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
3090
3107
|
<td class="mlabels-left">
|
|
3091
3108
|
<table class="memname">
|
|
3092
3109
|
<tr>
|
|
3093
|
-
<td class="memname"><a class="el" href="classSVF_1_1LLVMModuleSet.html#
|
|
3110
|
+
<td class="memname"><a class="el" href="classSVF_1_1LLVMModuleSet.html#a3c2eb10a20604bf794d2d10f2cffb116">Type2TypeInfoMap</a> SVF::LLVMModuleSet::Type2TypeInfo</td>
|
|
3094
3111
|
</tr>
|
|
3095
3112
|
</table>
|
|
3096
3113
|
</td>
|