svf-tools 1.0.604 → 1.0.605

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/Casting_8h.html +3 -0
  10. package/SVF-doxygen/html/html/Casting_8h_source.html +22 -22
  11. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +15 -15
  13. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  14. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +82 -74
  18. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +14 -14
  19. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +9 -9
  20. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +27 -21
  22. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +18 -18
  23. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +2 -2
  28. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
  29. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/html/MHP_8cpp_source.html +33 -38
  31. package/SVF-doxygen/html/html/MHP_8h_source.html +22 -22
  32. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
  34. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +12 -11
  38. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +11 -11
  39. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -2
  40. package/SVF-doxygen/html/html/SVFValue_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +8 -1
  43. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +11 -11
  44. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +8 -8
  45. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +2 -2
  50. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -1
  51. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
  52. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +5 -5
  53. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +1 -1
  54. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +2 -2
  55. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +1 -1
  56. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  57. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +2 -2
  58. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +19 -19
  59. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +11 -11
  60. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  61. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +228 -220
  62. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -2
  63. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +17 -17
  64. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +64 -58
  65. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  66. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +30 -38
  67. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  68. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +3 -3
  69. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +2 -2
  70. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -1
  71. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
  72. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +67 -83
  73. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  75. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +4 -4
  76. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +53 -53
  77. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
  78. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +1 -1
  79. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
  80. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +5 -5
  81. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +1 -1
  82. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +46 -33
  83. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +4 -4
  84. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  85. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +8 -1
  86. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +32 -32
  87. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  88. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +4 -4
  92. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  93. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +2 -2
  94. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +7 -7
  95. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +50 -17
  96. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +2 -2
  97. package/SVF-doxygen/html/html/namespacemembers_func_i.html +7 -7
  98. package/SVF-doxygen/html/html/namespacemembers_i.html +8 -8
  99. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  100. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  101. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val.html +3 -3
  102. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html +3 -3
  103. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty.html +2 -2
  104. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl.html +2 -2
  105. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html +2 -2
  106. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html +2 -2
  107. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html +2 -2
  108. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html +2 -2
  109. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html +4 -4
  110. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap.html +2 -2
  111. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html +2 -2
  112. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__simple__type.html +2 -2
  113. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  114. package/include/DDA/DDAVFSolver.h +4 -8
  115. package/include/Graphs/SVFGOPT.h +2 -2
  116. package/include/MTA/MTAResultValidator.h +1 -1
  117. package/include/Util/Casting.h +7 -0
  118. package/lib/CFL/CFLStat.cpp +1 -1
  119. package/lib/DDA/ContextDDA.cpp +1 -1
  120. package/lib/Graphs/ConsG.cpp +2 -2
  121. package/lib/Graphs/SVFGOPT.cpp +15 -17
  122. package/lib/MTA/FSMPTA.cpp +7 -6
  123. package/lib/MTA/LockAnalysis.cpp +1 -1
  124. package/lib/MTA/MHP.cpp +215 -227
  125. package/lib/MemoryModel/LocationSet.cpp +1 -1
  126. package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
  127. package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
  128. package/lib/SABER/SrcSnkDDA.cpp +3 -3
  129. package/lib/SVF-LLVM/LLVMModule.cpp +1 -1
  130. package/lib/SVF-LLVM/LLVMUtil.cpp +1 -1
  131. package/lib/SVF-LLVM/SVFIRBuilder.cpp +4 -4
  132. package/lib/SVF-LLVM/SymbolTableBuilder.cpp +3 -2
  133. package/lib/SVFIR/SymbolTableInfo.cpp +1 -1
  134. package/lib/WPA/AndersenSFR.cpp +1 -1
  135. package/lib/WPA/FlowSensitive.cpp +23 -22
  136. package/package.json +1 -1
@@ -345,7 +345,7 @@ Private Attributes</h2></td></tr>
345
345
  </div><div class="memdoc">
346
346
 
347
347
  <p class="definition">Definition at line <a class="el" href="IRAnnotator_8h_source.html#l00032">32</a> of file <a class="el" href="IRAnnotator_8h_source.html">IRAnnotator.h</a>.</p>
348
- <div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; this-&gt;<a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a> = <a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// Add a named metadata node used to check whether or not</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// this IR has been annotated with Andersen information</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>-&gt;getOrInsertNamedMetadata(<span class="stringliteral">&quot;SVFIR-Annotated&quot;</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = pag-&gt;begin(); it != pag-&gt;end(); ++it)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">auto</span> nodeId = it-&gt;first;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">auto</span> pagNode = it-&gt;second;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">auto</span> gepNode = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a>&lt;GepObjVar&gt;(pagNode);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> (gepNode &amp;&amp; writeFlag)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classSVF_1_1IRAnnotator.html#a958e9af846c882ef3eeba4d71ff7ef7d">writePAGgepNode</a>(nodeId, gepNode);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pagNode-&gt;hasValue())</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#aaf9b679407f12b93afc53c157d37b444">getLLVMValue</a>(pagNode-&gt;getValue());</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classSVF_1_1IRAnnotator.html#a067fe6d76b3b11bbb726e2b40e723f78">processPAGNode</a>(val, nodeId, writeFlag);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span> (!writeFlag)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classSVF_1_1IRAnnotator.html#a7f69afba3424c615736bffe2469d9a20">readPAGgepNodes</a>(pag);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><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&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00398">Casting.h:398</a></div></div>
348
+ <div class="fragment"><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; this-&gt;<a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a> = <a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// Add a named metadata node used to check whether or not</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// this IR has been annotated with Andersen information</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>-&gt;getOrInsertNamedMetadata(<span class="stringliteral">&quot;SVFIR-Annotated&quot;</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = pag-&gt;begin(); it != pag-&gt;end(); ++it)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">auto</span> nodeId = it-&gt;first;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">auto</span> pagNode = it-&gt;second;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">auto</span> gepNode = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a>&lt;GepObjVar&gt;(pagNode);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> (gepNode &amp;&amp; writeFlag)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classSVF_1_1IRAnnotator.html#a958e9af846c882ef3eeba4d71ff7ef7d">writePAGgepNode</a>(nodeId, gepNode);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pagNode-&gt;hasValue())</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#aaf9b679407f12b93afc53c157d37b444">getLLVMValue</a>(pagNode-&gt;getValue());</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classSVF_1_1IRAnnotator.html#a067fe6d76b3b11bbb726e2b40e723f78">processPAGNode</a>(val, nodeId, writeFlag);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span> (!writeFlag)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classSVF_1_1IRAnnotator.html#a7f69afba3424c615736bffe2469d9a20">readPAGgepNodes</a>(pag);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><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&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00405">Casting.h:405</a></div></div>
349
349
  <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#l00306">LLVMModule.h:306</a></div></div>
350
350
  <div class="ttc" id="classSVF_1_1IRAnnotator_html_a067fe6d76b3b11bbb726e2b40e723f78"><div class="ttname"><a href="classSVF_1_1IRAnnotator.html#a067fe6d76b3b11bbb726e2b40e723f78">SVF::IRAnnotator::processPAGNode</a></div><div class="ttdeci">void processPAGNode(const Value *value, SVF::NodeID nodeId, bool writeFlag)</div><div class="ttdef"><b>Definition:</b> <a href="IRAnnotator_8h_source.html#l00113">IRAnnotator.h:113</a></div></div>
351
351
  <div class="ttc" id="classSVF_1_1IRAnnotator_html_a01462e9ee84f490514598c68e8c9557b"><div class="ttname"><a href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">SVF::IRAnnotator::mainModule</a></div><div class="ttdeci">Module * mainModule</div><div class="ttdef"><b>Definition:</b> <a href="IRAnnotator_8h_source.html#l00317">IRAnnotator.h:317</a></div></div>
@@ -918,7 +918,7 @@ Static Private Attributes</h2></td></tr>
918
918
  <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#l00057">BasicTypes.h:57</a></div></div>
919
919
  <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#l00103">BasicTypes.h:103</a></div></div>
920
920
  <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>
921
- <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&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00398">Casting.h:398</a></div></div>
921
+ <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&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00405">Casting.h:405</a></div></div>
922
922
  <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#l00120">LLVMModule.h:120</a></div></div>
923
923
  <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#l00059">BasicTypes.h:59</a></div></div>
924
924
  <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#l00048">BasicTypes.h:48</a></div></div>
@@ -1257,7 +1257,7 @@ Static Private Attributes</h2></td></tr>
1257
1257
  <p>offset with int_32 (s32_t) is large enough and will not cause overflow </p>
1258
1258
 
1259
1259
  <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l01084">1084</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1260
- <div class="fragment"><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;{</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf = 0;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="comment">// The offset when considering array stride info</span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordflow">for</span> (StructType::element_iterator it = sty-&gt;element_begin(), ie =</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; sty-&gt;element_end(); it != ie; ++it)</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; {</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* et = *it;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; stinfo-&gt;<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="l01099"></a><span class="lineno"> 1099</span>&#160;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(et) || SVFUtil::isa&lt;ArrayType&gt;(et))</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <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="l01103"></a><span class="lineno"> 1103</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="comment">//Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; j++)</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; {</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; }</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; nf += nfE;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; strideOffset += nfE * subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">getStride</a>();</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpi = 0; tpi &lt; subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">getStride</a>(); tpi++)</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; {</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj &lt; nfE; tpj++)</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; {</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[tpj]);</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; }</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; }</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; }</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="keywordflow">else</span> <span class="comment">//simple type</span></div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; {</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; nf += 1;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; strideOffset += 1;</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; stinfo-&gt;<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="l01125"></a><span class="lineno"> 1125</span>&#160; stinfo-&gt;<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="l01126"></a><span class="lineno"> 1126</span>&#160; }</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; }</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; assert(stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &amp;&amp; <span class="stringliteral">&quot;typeForStruct size incorrect!&quot;</span>);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nf,strideOffset);</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="comment">//Record the size of the complete struct and update max_struct.</span></div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <span class="keywordflow">if</span> (nf &gt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; {</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">maxStruct</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(sty);</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; }</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;}</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#l00057">BasicTypes.h:57</a></div></div>
1260
+ <div class="fragment"><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;{</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf = 0;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="comment">// The offset when considering array stride info</span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordflow">for</span> (StructType::element_iterator it = sty-&gt;element_begin(), ie =</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; sty-&gt;element_end(); it != ie; ++it)</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; {</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* et = *it;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; stinfo-&gt;<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="l01099"></a><span class="lineno"> 1099</span>&#160;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(et))</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <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="l01103"></a><span class="lineno"> 1103</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="comment">//Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; j++)</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; {</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; }</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; nf += nfE;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; strideOffset += nfE * subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">getStride</a>();</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpi = 0; tpi &lt; subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">getStride</a>(); tpi++)</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; {</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj &lt; nfE; tpj++)</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; {</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[tpj]);</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; }</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; }</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; }</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="keywordflow">else</span> <span class="comment">//simple type</span></div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; {</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; nf += 1;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; strideOffset += 1;</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; stinfo-&gt;<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="l01125"></a><span class="lineno"> 1125</span>&#160; stinfo-&gt;<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="l01126"></a><span class="lineno"> 1126</span>&#160; }</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; }</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; assert(stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &amp;&amp; <span class="stringliteral">&quot;typeForStruct size incorrect!&quot;</span>);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nf,strideOffset);</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="comment">//Record the size of the complete struct and update max_struct.</span></div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <span class="keywordflow">if</span> (nf &gt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; {</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">maxStruct</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(sty);</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; }</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">return</span> stinfo;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;}</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#l00057">BasicTypes.h:57</a></div></div>
1261
1261
  <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>
1262
1262
  <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&lt; const SVFType * &gt; &amp; getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00185">SVFType.h:185</a></div></div>
1263
1263
  <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>
@@ -1573,7 +1573,7 @@ Static Private Attributes</h2></td></tr>
1573
1573
 
1574
1574
  <p class="definition">Definition at line <a class="el" href="LLVMModule_8cpp_source.html#l00446">446</a> of file <a class="el" href="LLVMModule_8cpp_source.html">LLVMModule.cpp</a>.</p>
1575
1575
  <div class="fragment"><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;{</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="comment">// This function is used to extract constructor and destructor functions</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="comment">// sorted by their priority from @llvm.global_ctors or @llvm.global_dtors.</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="comment">// For example, given following @llvm.global_ctors, the returning sorted</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="comment">// function list should be [ctor3, ctor1, ctor2].</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="comment">// ; Each struct in the array is {priority, function, associated data}</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="comment">// @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }]</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="comment">// [{ i32, void ()*, i8* } { i32 1234, void ()* @ctor1.cpp, i8* null },</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 2345, void ()* @ctor2.cpp, i8* null },</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="comment">// { i32, void ()*, i8* } { i32 345, void ()* @ctor3.cpp, i8* null }]</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="comment">// ------------------------------------------------------------------</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="comment">// TODO: According to LLVM language reference, if the third field is</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="comment">// non-null, and points to a global variable or function, the initializer</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="comment">// function will only run if the associated data from the current module is</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="comment">// not discarded. However the associated data is currently ignored.</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="comment">// This class is used for the priority queue that sorts the functions by</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="comment">// their priority. Each object of this class stands for an item in the</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="comment">// function array.</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keyword">class </span>LLVMGlobalFunction</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> priority;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; LLVMGlobalFunction() {};</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; LLVMGlobalFunction(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> _priority, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* _func)</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; : priority(_priority), func(_func) {};</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordtype">bool</span> operator&gt;(<span class="keyword">const</span> LLVMGlobalFunction &amp;other)<span class="keyword"> const</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span> (priority != other.priority)</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">return</span> priority &gt; other.priority;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">return</span> func &gt; other.func;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; };</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; std::priority_queue&lt;LLVMGlobalFunction, std::vector&lt;LLVMGlobalFunction&gt;,</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; greater&lt;LLVMGlobalFunction&gt;&gt;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; queue;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; std::vector&lt;const Function* &gt; result;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="comment">// The @llvm.global_ctors/dtors global variable is an array of struct. Each</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="comment">// struct has three fields: {i32 priority, void ()* @ctor/dtor, i8* @data}.</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="comment">// First get the array here.</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <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="l00499"></a><span class="lineno"> 499</span>&#160; SVFUtil::dyn_cast&lt;ConstantArray&gt;(global-&gt;getInitializer()))</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="comment">// Get each struct in the array.</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; globalFuncArray-&gt;getNumOperands(); ++i)</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">if</span> (</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *globalFuncItem =</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; SVFUtil::dyn_cast&lt;ConstantStruct&gt;(</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; globalFuncArray-&gt;getOperand(i)))</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="comment">// Extract priority and function from the struct</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <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>&lt;<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>&gt;(</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; globalFuncItem-&gt;getOperand(0));</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <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>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; globalFuncItem-&gt;getOperand(1));</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">if</span> (priority &amp;&amp; func)</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; queue.push(LLVMGlobalFunction(priority</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; -&gt;getZExtValue(),</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; func));</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; }</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="comment">// Generate a sorted vector of functions from the priority queue.</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">while</span> (!queue.empty())</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; result.push_back(queue.top().func);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; queue.pop();</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; }</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;}</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#l00097">BasicTypes.h:97</a></div></div>
1576
- <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&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00398">Casting.h:398</a></div></div>
1576
+ <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&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00405">Casting.h:405</a></div></div>
1577
1577
  <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#l00099">BasicTypes.h:99</a></div></div>
1578
1578
  <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>
1579
1579
  <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#l00059">BasicTypes.h:59</a></div></div>
@@ -355,7 +355,7 @@ Friends</h2></td></tr>
355
355
  <div class="fragment"><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; assert(<a class="code" href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d">isConstantOffset</a>() &amp;&amp; <span class="stringliteral">&quot;not a constant offset&quot;</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30">offsetValues</a>.empty())</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html#a63c5c8e03b35e0d0cea94137d309c853">accumulateConstantFieldIdx</a>();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> totalConstOffset = 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = <a class="code" href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30">offsetValues</a>.size() - 1; i &gt;= 0; i--)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value = <a class="code" href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30">offsetValues</a>[i].first;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = <a class="code" href="classSVF_1_1LocationSet.html#a5a2792b8b914557a9ccf0e57d0ed8b30">offsetValues</a>[i].second;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>* op = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>&gt;(value);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; assert(op &amp;&amp; <span class="stringliteral">&quot;not a constant offset?&quot;</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span>(type==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; totalConstOffset += op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* pty = SVFUtil::dyn_cast&lt;SVFPointerType&gt;(type))</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; totalConstOffset += op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>() * <a class="code" href="classSVF_1_1LocationSet.html#a0b4376975f8532c7e2daa759ec7922f7">getElementNum</a>(pty-&gt;getPtrElementType());</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = op-&gt;<a class="code" href="classSVF_1_1SVFConstantInt.html#a73f04bdfc19261b65164b98787bc2ed4">getSExtValue</a>();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenOffset = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(type, offset);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; totalConstOffset += flattenOffset;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> totalConstOffset;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;}</div><div class="ttc" id="classSVF_1_1LocationSet_html_a4a9185282308c50f86fdf66f7060373d"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d">SVF::LocationSet::isConstantOffset</a></div><div class="ttdeci">bool isConstantOffset() const</div><div class="ttdoc">Return TRUE if this is a constant location set. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00049">LocationSet.cpp:49</a></div></div>
356
356
  <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>
357
357
  <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
358
- <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&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00398">Casting.h:398</a></div></div>
358
+ <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&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00405">Casting.h:405</a></div></div>
359
359
  <div class="ttc" id="classSVF_1_1SVFPointerType_html"><div class="ttname"><a href="classSVF_1_1SVFPointerType.html">SVF::SVFPointerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00315">SVFType.h:315</a></div></div>
360
360
  <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>
361
361
  <div class="ttc" id="classSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00147">SVFValue.h:147</a></div></div>
@@ -531,7 +531,7 @@ Friends</h2></td></tr>
531
531
  <p>This is a pointer arithmic </p>
532
532
 
533
533
  <p class="definition">Definition at line <a class="el" href="LocationSet_8cpp_source.html#l00063">63</a> of file <a class="el" href="LocationSet_8cpp_source.html">LocationSet.cpp</a>.</p>
534
- <div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;SVFArrayType&gt;(type) || SVFUtil::isa&lt;SVFStructType&gt;(type))</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a811a3489df0f793c7a5482d31d470a4c">getNumOfFlattenElements</a>(type);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-&gt;<a class="code" href="classSVF_1_1SVFType.html#a5d19107cd4bd64c3918419fd7d22d3b6">isSingleValueType</a>())</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* pty = SVFUtil::dyn_cast&lt;SVFPointerType&gt;(type))</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html#a0b4376975f8532c7e2daa759ec7922f7">getElementNum</a>(pty-&gt;getPtrElementType());</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFFunctionType&gt;(type))</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;GepIter Type&quot;</span> &lt;&lt; type-&gt;<a class="code" href="classSVF_1_1SVFType.html#a879a4cc9b217fde0aa350fb8f7f7e047">toString</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;What other types for this gep?&quot;</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; abort();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFPointerType_html"><div class="ttname"><a href="classSVF_1_1SVFPointerType.html">SVF::SVFPointerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00315">SVFType.h:315</a></div></div>
534
+ <div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFArrayType, SVFStructType&gt;(type))</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a811a3489df0f793c7a5482d31d470a4c">getNumOfFlattenElements</a>(type);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-&gt;<a class="code" href="classSVF_1_1SVFType.html#a5d19107cd4bd64c3918419fd7d22d3b6">isSingleValueType</a>())</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* pty = SVFUtil::dyn_cast&lt;SVFPointerType&gt;(type))</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html#a0b4376975f8532c7e2daa759ec7922f7">getElementNum</a>(pty-&gt;getPtrElementType());</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFFunctionType&gt;(type))</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;GepIter Type&quot;</span> &lt;&lt; type-&gt;<a class="code" href="classSVF_1_1SVFType.html#a879a4cc9b217fde0aa350fb8f7f7e047">toString</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;What other types for this gep?&quot;</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; abort();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFPointerType_html"><div class="ttname"><a href="classSVF_1_1SVFPointerType.html">SVF::SVFPointerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00315">SVFType.h:315</a></div></div>
535
535
  <div class="ttc" id="classSVF_1_1SVFType_html_a879a4cc9b217fde0aa350fb8f7f7e047"><div class="ttname"><a href="classSVF_1_1SVFType.html#a879a4cc9b217fde0aa350fb8f7f7e047">SVF::SVFType::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdoc">Needs to be implemented by a specific SVF front end (e.g., the implementation in LLVMUtil) ...</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00698">LLVMUtil.cpp:698</a></div></div>
536
536
  <div class="ttc" id="classSVF_1_1LocationSet_html_a0b4376975f8532c7e2daa759ec7922f7"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a0b4376975f8532c7e2daa759ec7922f7">SVF::LocationSet::getElementNum</a></div><div class="ttdeci">u32_t getElementNum(const SVFType *type) const</div><div class="ttdoc">Return element number of a type. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00063">LocationSet.cpp:63</a></div></div>
537
537
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
@@ -1767,7 +1767,7 @@ Private Attributes</h2></td></tr>
1767
1767
  <p>Handle return. </p>
1768
1768
 
1769
1769
  <p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00448">448</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
1770
- <div class="fragment"><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;{</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>();</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = curInst-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#aef7ad257ea809101df33779463907f3e">getFunction</a>();</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* curFunNode = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = curFunNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = curFunNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it != eit; ++it)</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *it;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ThreadForkEdge&gt;(edge) || SVFUtil::isa&lt;ThreadJoinEdge&gt;(edge))</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;directCallsBegin(), ecit = (edge)-&gt;directCallsEnd(); cit != ecit;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; ++cit)</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst = (*cit)-&gt;getCallSite();</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a78eb13118f947fb1d84e274bb0f46695">matchCxt</a>(newCxt, inst, curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()))</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a>&amp; nextInsts = inst-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#a281d6b024afeeb96bac281eb23ce3f1f">getSuccInstructions</a>();</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt, *nit);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;indirectCallsBegin(), ecit = (edge)-&gt;indirectCallsEnd();</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; cit != ecit; ++cit)</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst = (*cit)-&gt;getCallSite();</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a78eb13118f947fb1d84e274bb0f46695">matchCxt</a>(newCxt, inst, curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()))</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a>&amp; nextInsts = inst-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#a281d6b024afeeb96bac281eb23ce3f1f">getSuccInstructions</a>();</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt, *nit);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;}</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>
1770
+ <div class="fragment"><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;{</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a0b593c4ba425937212e2889e64ce4791">getStmt</a>();</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = curInst-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#aef7ad257ea809101df33779463907f3e">getFunction</a>();</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* curFunNode = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = curFunNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = curFunNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it != eit; ++it)</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *it;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ThreadForkEdge, ThreadJoinEdge&gt;(edge))</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;directCallsBegin(), ecit = (edge)-&gt;directCallsEnd(); cit != ecit;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; ++cit)</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst = (*cit)-&gt;getCallSite();</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a78eb13118f947fb1d84e274bb0f46695">matchCxt</a>(newCxt, inst, curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()))</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a>&amp; nextInsts = inst-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#a281d6b024afeeb96bac281eb23ce3f1f">getSuccInstructions</a>();</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt, *nit);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)-&gt;indirectCallsBegin(), ecit = (edge)-&gt;indirectCallsEnd();</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; cit != ecit; ++cit)</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst = (*cit)-&gt;getCallSite();</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a78eb13118f947fb1d84e274bb0f46695">matchCxt</a>(newCxt, inst, curFunNode-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()))</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a>&amp; nextInsts = inst-&gt;<a class="code" href="classSVF_1_1SVFInstruction.html#a281d6b024afeeb96bac281eb23ce3f1f">getSuccInstructions</a>();</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt, *nit);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;}</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>
1771
1771
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
1772
1772
  <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00188">GenericGraph.h:188</a></div></div>
1773
1773
  <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>
@@ -317,7 +317,7 @@ Static Private Attributes</h2></td></tr>
317
317
  <div class="ttc" id="namespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00121">BasicTypes.h:121</a></div></div>
318
318
  <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#l00058">BasicTypes.h:58</a></div></div>
319
319
  <div class="ttc" id="namespaceSVF_html_aad5d26ab07a5d1314bdb8f54e0fcdb22"><div class="ttname"><a href="namespaceSVF.html#aad5d26ab07a5d1314bdb8f54e0fcdb22">SVF::BinaryOperator</a></div><div class="ttdeci">llvm::BinaryOperator BinaryOperator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00152">BasicTypes.h:152</a></div></div>
320
- <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&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00398">Casting.h:398</a></div></div>
320
+ <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&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00405">Casting.h:405</a></div></div>
321
321
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a0be1cdab3c36835044e3b26d5d8402e6"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6">SVF::LockResultValidator::getPreviousMemoryAccessInst</a></div><div class="ttdeci">const Instruction * getPreviousMemoryAccessInst(const Instruction *I)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00046">LockResultValidator.h:46</a></div></div>
322
322
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_afec6058866fe334646db78227fb4d6a6"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6">SVF::LockResultValidator::CxtLockSetStr</a></div><div class="ttdeci">Set&lt; std::string &gt; CxtLockSetStr</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00022">LockResultValidator.h:22</a></div></div>
323
323
  <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#l00059">BasicTypes.h:59</a></div></div>
@@ -511,7 +511,7 @@ Static Private Attributes</h2></td></tr>
511
511
  <p class="definition">Definition at line <a class="el" href="LockResultValidator_8cpp_source.html#l00038">38</a> of file <a class="el" href="LockResultValidator_8cpp_source.html">LockResultValidator.cpp</a>.</p>
512
512
  <div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; assert(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">LLVMUtil::isCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;getFirstIntArg: inst is not a callsite&quot;</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">LLVMUtil::getLLVMCallSite</a>(inst);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; assert((arg_num &lt; cs-&gt;arg_size()) &amp;&amp; <span class="stringliteral">&quot;Does not has this argument&quot;</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gepinst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>&gt;(cs-&gt;getArgOperand(arg_num));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* arrayinst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>&gt;(gepinst-&gt;getOperand(0));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad9ebd847ed5d901cd30b1cfcdaec3462">ConstantDataArray</a>* cxtarray = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#ad9ebd847ed5d901cd30b1cfcdaec3462">ConstantDataArray</a>&gt;(arrayinst-&gt;getOperand(0));</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span> (!cxtarray)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> strvec;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> strvec;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> vthdcxtstring = cxtarray-&gt;getAsCString().str();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">split</a>(vthdcxtstring, <span class="charliteral">&#39;,&#39;</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a5a7dc8680a9714e08b01dd339b85bb20"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">SVF::LLVMUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00047">LLVMUtil.h:47</a></div></div>
513
513
  <div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a0095d23a9c9d5d62ec4a23c56824b5f0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">SVF::LLVMUtil::getLLVMCallSite</a></div><div class="ttdeci">const CallBase * getLLVMCallSite(const Value *value)</div><div class="ttdoc">Return LLVM callsite given a value. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00071">LLVMUtil.h:71</a></div></div>
514
- <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&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00398">Casting.h:398</a></div></div>
514
+ <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&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00405">Casting.h:405</a></div></div>
515
515
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_ab8a6935e1ea6f99d60ead862a7b1782f"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">SVF::LockResultValidator::split</a></div><div class="ttdeci">Set&lt; std::string &gt; &amp; split(const std::string &amp;s, char delim, Set&lt; std::string &gt; &amp;elems)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00055">LockResultValidator.cpp:55</a></div></div>
516
516
  <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&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00094">SVFType.h:94</a></div></div>
517
517
  <div class="ttc" id="namespaceSVF_html_ad9ebd847ed5d901cd30b1cfcdaec3462"><div class="ttname"><a href="namespaceSVF.html#ad9ebd847ed5d901cd30b1cfcdaec3462">SVF::ConstantDataArray</a></div><div class="ttdeci">llvm::ConstantDataArray ConstantDataArray</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>