svf-tools 1.0.528 → 1.0.531

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 (175) hide show
  1. package/CMakeLists.txt +1 -1
  2. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +10 -10
  3. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +3 -3
  4. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +3 -3
  5. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +6 -6
  6. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +1 -1
  7. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +3 -3
  8. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -3
  9. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +1 -1
  10. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +15 -15
  11. package/SVF-doxygen/html/html/DCHG_8h_source.html +6 -6
  12. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +3 -3
  14. package/SVF-doxygen/html/html/ExeState_8h_source.html +1 -1
  15. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h.html +4 -4
  16. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +4 -4
  17. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
  19. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +5 -5
  20. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +1 -1
  21. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +5 -5
  22. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
  23. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +7 -7
  24. package/SVF-doxygen/html/html/LLVMUtil_8h.html +10 -10
  25. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +4 -4
  26. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +2 -2
  27. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +5 -5
  28. package/SVF-doxygen/html/html/MHP_8cpp.html +5 -5
  29. package/SVF-doxygen/html/html/MHP_8cpp_source.html +6 -6
  30. package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
  31. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +5 -5
  33. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +2 -2
  34. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
  35. package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -3
  36. package/SVF-doxygen/html/html/MTA_8h_source.html +4 -4
  37. package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
  39. package/SVF-doxygen/html/html/PointsTo_8h_source.html +1 -1
  40. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +157 -1351
  41. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +76 -75
  42. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +24 -24
  43. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +34 -34
  44. package/SVF-doxygen/html/html/SVFLoop_8h_source.html +32 -32
  45. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +2 -2
  46. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +2 -2
  47. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
  48. package/SVF-doxygen/html/html/SymState_8h_source.html +1 -1
  49. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +17 -17
  50. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +2 -2
  51. package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
  52. package/SVF-doxygen/html/html/TCT_8h_source.html +2 -2
  53. package/SVF-doxygen/html/html/WPAPass_8h_source.html +2 -2
  54. package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
  55. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
  56. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +5 -5
  57. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +12 -12
  58. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
  59. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +149 -149
  60. package/SVF-doxygen/html/html/classSVF_1_1DCHNode.html +12 -12
  61. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +5 -5
  62. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +5 -5
  63. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +18 -18
  64. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +5 -5
  65. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +10 -10
  66. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +2 -2
  67. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +7 -7
  68. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +2 -2
  69. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +12 -12
  70. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +2 -2
  71. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +10 -10
  72. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +2 -2
  73. package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -3
  74. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
  75. package/SVF-doxygen/html/html/classSVF_1_1PTASCEV.html +5 -5
  76. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  77. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +88 -88
  78. package/SVF-doxygen/html/html/classSVF_1_1SVFLoop.html +57 -57
  79. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +10 -10
  80. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +25 -25
  81. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +2 -2
  82. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +2 -2
  83. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +2 -2
  84. package/SVF-doxygen/html/html/globals_a.html +0 -9
  85. package/SVF-doxygen/html/html/globals_b.html +4 -19
  86. package/SVF-doxygen/html/html/globals_c.html +8 -50
  87. package/SVF-doxygen/html/html/globals_d.html +0 -33
  88. package/SVF-doxygen/html/html/globals_e.html +0 -6
  89. package/SVF-doxygen/html/html/globals_f.html +2 -8
  90. package/SVF-doxygen/html/html/globals_g.html +0 -9
  91. package/SVF-doxygen/html/html/globals_i.html +4 -22
  92. package/SVF-doxygen/html/html/globals_l.html +2 -8
  93. package/SVF-doxygen/html/html/globals_m.html +1 -13
  94. package/SVF-doxygen/html/html/globals_p.html +0 -3
  95. package/SVF-doxygen/html/html/globals_r.html +4 -10
  96. package/SVF-doxygen/html/html/globals_s.html +0 -30
  97. package/SVF-doxygen/html/html/globals_type.html +1 -284
  98. package/SVF-doxygen/html/html/globals_u.html +0 -15
  99. package/SVF-doxygen/html/html/globals_v.html +2 -17
  100. package/SVF-doxygen/html/html/menudata.js +19 -34
  101. package/SVF-doxygen/html/html/namespaceSVF.html +1825 -475
  102. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +45 -45
  103. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +10 -10
  104. package/SVF-doxygen/html/html/namespacellvm.html +4 -8
  105. package/SVF-doxygen/html/html/namespacemembers.html +9 -0
  106. package/SVF-doxygen/html/html/namespacemembers_b.html +13 -0
  107. package/SVF-doxygen/html/html/namespacemembers_c.html +43 -1
  108. package/SVF-doxygen/html/html/namespacemembers_d.html +34 -1
  109. package/SVF-doxygen/html/html/namespacemembers_e.html +6 -0
  110. package/SVF-doxygen/html/html/namespacemembers_f.html +6 -0
  111. package/SVF-doxygen/html/html/namespacemembers_g.html +13 -4
  112. package/SVF-doxygen/html/html/namespacemembers_i.html +26 -8
  113. package/SVF-doxygen/html/html/namespacemembers_l.html +6 -0
  114. package/SVF-doxygen/html/html/namespacemembers_m.html +12 -0
  115. package/SVF-doxygen/html/html/namespacemembers_p.html +3 -0
  116. package/SVF-doxygen/html/html/namespacemembers_r.html +6 -0
  117. package/SVF-doxygen/html/html/namespacemembers_s.html +30 -0
  118. package/SVF-doxygen/html/html/namespacemembers_type.html +7 -436
  119. package/SVF-doxygen/html/html/namespacemembers_type_b.html +3 -0
  120. package/SVF-doxygen/html/html/namespacemembers_type_c.html +8 -8
  121. package/SVF-doxygen/html/html/namespacemembers_type_e.html +6 -0
  122. package/SVF-doxygen/html/html/namespacemembers_type_g.html +9 -0
  123. package/SVF-doxygen/html/html/namespacemembers_type_l.html +0 -3
  124. package/SVF-doxygen/html/html/namespacemembers_type_m.html +3 -0
  125. package/SVF-doxygen/html/html/namespacemembers_type_n.html +1 -1
  126. package/SVF-doxygen/html/html/namespacemembers_type_p.html +0 -6
  127. package/SVF-doxygen/html/html/namespacemembers_type_s.html +3 -18
  128. package/SVF-doxygen/html/html/namespacemembers_type_t.html +0 -3
  129. package/SVF-doxygen/html/html/namespacemembers_type_v.html +0 -6
  130. package/SVF-doxygen/html/html/namespacemembers_u.html +15 -0
  131. package/SVF-doxygen/html/html/namespacemembers_v.html +15 -0
  132. package/SVF-doxygen/html/html/search/all_1.js +3 -3
  133. package/SVF-doxygen/html/html/search/all_10.js +1 -1
  134. package/SVF-doxygen/html/html/search/all_11.js +2 -2
  135. package/SVF-doxygen/html/html/search/all_12.js +10 -10
  136. package/SVF-doxygen/html/html/search/all_14.js +5 -5
  137. package/SVF-doxygen/html/html/search/all_15.js +5 -5
  138. package/SVF-doxygen/html/html/search/all_2.js +5 -5
  139. package/SVF-doxygen/html/html/search/all_3.js +14 -14
  140. package/SVF-doxygen/html/html/search/all_4.js +11 -11
  141. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  142. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  143. package/SVF-doxygen/html/html/search/all_7.js +3 -3
  144. package/SVF-doxygen/html/html/search/all_9.js +6 -6
  145. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  146. package/SVF-doxygen/html/html/search/all_d.js +4 -4
  147. package/SVF-doxygen/html/html/search/typedefs_0.js +3 -3
  148. package/SVF-doxygen/html/html/search/typedefs_1.js +5 -5
  149. package/SVF-doxygen/html/html/search/typedefs_10.js +10 -10
  150. package/SVF-doxygen/html/html/search/typedefs_12.js +5 -5
  151. package/SVF-doxygen/html/html/search/typedefs_13.js +5 -5
  152. package/SVF-doxygen/html/html/search/typedefs_2.js +14 -14
  153. package/SVF-doxygen/html/html/search/typedefs_3.js +11 -11
  154. package/SVF-doxygen/html/html/search/typedefs_4.js +2 -2
  155. package/SVF-doxygen/html/html/search/typedefs_5.js +2 -2
  156. package/SVF-doxygen/html/html/search/typedefs_6.js +3 -3
  157. package/SVF-doxygen/html/html/search/typedefs_7.js +6 -6
  158. package/SVF-doxygen/html/html/search/typedefs_a.js +2 -2
  159. package/SVF-doxygen/html/html/search/typedefs_b.js +4 -4
  160. package/SVF-doxygen/html/html/search/typedefs_e.js +1 -1
  161. package/SVF-doxygen/html/html/search/typedefs_f.js +2 -2
  162. package/include/MemoryModel/PointsTo.h +1 -1
  163. package/include/MemoryModel/SVFLoop.h +2 -1
  164. package/include/SVF-FE/BasicTypes.h +5 -0
  165. package/include/SVF-FE/CHGBuilder.h +2 -1
  166. package/include/SVF-FE/LLVMLoopAnalysis.h +1 -1
  167. package/include/SVF-FE/SymbolTableBuilder.h +1 -1
  168. package/include/Util/CoreBitVector.h +1 -1
  169. package/include/Util/DPItem.h +1 -1
  170. package/include/Util/ExeState.h +1 -1
  171. package/include/Util/SparseBitVector.h +1 -1
  172. package/include/Util/SymState.h +1 -1
  173. package/include/Util/Z3Expr.h +3 -2
  174. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  175. package/package.json +1 -1
@@ -482,7 +482,8 @@ Static Private Attributes</h2></td></tr>
482
482
  </div><div class="memdoc">
483
483
 
484
484
  <p class="definition">Definition at line <a class="el" href="MTAResultValidator_8cpp_source.html#l00215">215</a> of file <a class="el" href="MTAResultValidator_8cpp_source.html">MTAResultValidator.cpp</a>.</p>
485
- <div class="fragment"><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;{</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">getModule</a>()-&gt;llvmFunBegin(); it != <a class="code" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); it++)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> fName = (*it)-&gt;getName().str();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">if</span>(fName.find(<a class="code" href="classSVF_1_1MTAResultValidator.html#a251e16fc1fb663c238122dd6d2ba02e1">CXT_THREAD</a>) != std::string::npos)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; F = (*it);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> (!F)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="comment">// Push main thread into vthdToCxt;</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> main_cxt;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#a245c967245e5a693eaf7f60782143d7a">vthdToCxt</a>[0] = main_cxt;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// Collect call sites of all CXT_THREAD function calls.</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">for</span> (Value::const_use_iterator it = F-&gt;use_begin(), ie = F-&gt;use_end(); it != ie; ++it)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a9c01c67684e99545d8e0403321594977">Use</a> *u = &amp;*it;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *user = u-&gt;getUser();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(user);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vthdnum = <a class="code" href="classSVF_1_1MTAResultValidator.html#a4ff908be3569c18528fb6f6ff98cd11a">getIntArg</a>(inst, 0);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt = <a class="code" href="classSVF_1_1MTAResultValidator.html#afb110fec926967ba334bf2635d58a339">getCxtArg</a>(inst, 1);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#a245c967245e5a693eaf7f60782143d7a">vthdToCxt</a>[vthdnum] = cxt;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
485
+ <div class="fragment"><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;{</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">getModule</a>()-&gt;llvmFunBegin(); it != <a class="code" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); it++)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> fName = (*it)-&gt;getName().str();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">if</span>(fName.find(<a class="code" href="classSVF_1_1MTAResultValidator.html#a251e16fc1fb663c238122dd6d2ba02e1">CXT_THREAD</a>) != std::string::npos)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; F = (*it);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> (!F)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="comment">// Push main thread into vthdToCxt;</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> main_cxt;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#a245c967245e5a693eaf7f60782143d7a">vthdToCxt</a>[0] = main_cxt;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// Collect call sites of all CXT_THREAD function calls.</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">for</span> (Value::const_use_iterator it = F-&gt;use_begin(), ie = F-&gt;use_end(); it != ie; ++it)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">Use</a> *u = &amp;*it;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *user = u-&gt;getUser();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(user);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vthdnum = <a class="code" href="classSVF_1_1MTAResultValidator.html#a4ff908be3569c18528fb6f6ff98cd11a">getIntArg</a>(inst, 0);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt = <a class="code" href="classSVF_1_1MTAResultValidator.html#afb110fec926967ba334bf2635d58a339">getCxtArg</a>(inst, 1);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#a245c967245e5a693eaf7f60782143d7a">vthdToCxt</a>[vthdnum] = cxt;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a334998718813a19a7697daf4ba282faf"><div class="ttname"><a href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">SVF::Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00032">BasicTypes.h:32</a></div></div>
486
+ <div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
486
487
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
487
488
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_a4ff908be3569c18528fb6f6ff98cd11a"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a4ff908be3569c18528fb6f6ff98cd11a">SVF::MTAResultValidator::getIntArg</a></div><div class="ttdeci">NodeID getIntArg(const Instruction *inst, unsigned int arg_num)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00059">MTAResultValidator.cpp:59</a></div></div>
488
489
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_a251e16fc1fb663c238122dd6d2ba02e1"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a251e16fc1fb663c238122dd6d2ba02e1">SVF::MTAResultValidator::CXT_THREAD</a></div><div class="ttdeci">static constexpr char const * CXT_THREAD</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00130">MTAResultValidator.h:130</a></div></div>
@@ -492,7 +493,6 @@ Static Private Attributes</h2></td></tr>
492
493
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
493
494
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_a245c967245e5a693eaf7f60782143d7a"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a245c967245e5a693eaf7f60782143d7a">SVF::MTAResultValidator::vthdToCxt</a></div><div class="ttdeci">vthdToCxtMap vthdToCxt</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00137">MTAResultValidator.h:137</a></div></div>
494
495
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_aecaf875c6c88f7ba6fa45540e8436f57"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">SVF::MTAResultValidator::getModule</a></div><div class="ttdeci">SVFModule * getModule() const</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00040">MTAResultValidator.h:40</a></div></div>
495
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a9c01c67684e99545d8e0403321594977"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a9c01c67684e99545d8e0403321594977">Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00029">BasicTypes.h:29</a></div></div>
496
496
  <div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
497
497
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
498
498
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
@@ -524,7 +524,8 @@ Static Private Attributes</h2></td></tr>
524
524
  </div><div class="memdoc">
525
525
 
526
526
  <p class="definition">Definition at line <a class="el" href="MTAResultValidator_8cpp_source.html#l00285">285</a> of file <a class="el" href="MTAResultValidator_8cpp_source.html">MTAResultValidator.cpp</a>.</p>
527
- <div class="fragment"><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;{</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// Collect call sites of all INTERLEV_ACCESS function calls.</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">getModule</a>()-&gt;llvmFunBegin(); it != <a class="code" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); it++)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> fName = (*it)-&gt;getName().str();</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span>(fName.find(<a class="code" href="classSVF_1_1MTAResultValidator.html#a7b47044960a12203ce0ce245c4c9c8ec">INTERLEV_ACCESS</a>) != std::string::npos)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; F = (*it);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (!F)</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">for</span> (Value::const_use_iterator it = F-&gt;use_begin(), ie = F-&gt;use_end(); it != ie; ++it)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a9c01c67684e99545d8e0403321594977">Use</a> *u = &amp;*it;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *user = u-&gt;getUser();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(user);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vthdnum = <a class="code" href="classSVF_1_1MTAResultValidator.html#a4ff908be3569c18528fb6f6ff98cd11a">getIntArg</a>(inst, 0);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rthdnum = <a class="code" href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a">vthdTorthd</a>[vthdnum];</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> x = <a class="code" href="classSVF_1_1MTAResultValidator.html#afb110fec926967ba334bf2635d58a339">getCxtArg</a>(inst, 1);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; std::vector&lt;std::string&gt; y = <a class="code" href="classSVF_1_1MTAResultValidator.html#a1ac51d2847f9bdee27092ab22211bb61">getStringArg</a>(inst, 2);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment">// Record given interleaving</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> lev;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="comment">// Push thread itself into interleaving set</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; lev.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(rthdnum);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="comment">// Find rthd of given vthd and push it into interleaving set</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">for</span> (std::vector&lt;std::string&gt;::iterator i = y.begin(); i != y.end(); i++)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; lev.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(<a class="code" href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a">vthdTorthd</a>[atoi((*i).c_str())]);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* memInst = <a class="code" href="classSVF_1_1MTAResultValidator.html#ab3ba3c6d9c40e97febdab0e7d4ad9a3e">getPreviousMemoryAccessInst</a>(inst);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> cts(rthdnum, x, memInst);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#a8452bf182f6f1e0f4c239f620ee803b1">instToTSMap</a>[memInst].insert(cts);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#ac4a7773211a9c842639ac25b1a504c7e">threadStmtToInterLeaving</a>[cts] = lev;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
527
+ <div class="fragment"><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;{</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// Collect call sites of all INTERLEV_ACCESS function calls.</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">getModule</a>()-&gt;llvmFunBegin(); it != <a class="code" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); it++)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> fName = (*it)-&gt;getName().str();</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span>(fName.find(<a class="code" href="classSVF_1_1MTAResultValidator.html#a7b47044960a12203ce0ce245c4c9c8ec">INTERLEV_ACCESS</a>) != std::string::npos)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; F = (*it);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (!F)</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">for</span> (Value::const_use_iterator it = F-&gt;use_begin(), ie = F-&gt;use_end(); it != ie; ++it)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">Use</a> *u = &amp;*it;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *user = u-&gt;getUser();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(user);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vthdnum = <a class="code" href="classSVF_1_1MTAResultValidator.html#a4ff908be3569c18528fb6f6ff98cd11a">getIntArg</a>(inst, 0);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rthdnum = <a class="code" href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a">vthdTorthd</a>[vthdnum];</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> x = <a class="code" href="classSVF_1_1MTAResultValidator.html#afb110fec926967ba334bf2635d58a339">getCxtArg</a>(inst, 1);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; std::vector&lt;std::string&gt; y = <a class="code" href="classSVF_1_1MTAResultValidator.html#a1ac51d2847f9bdee27092ab22211bb61">getStringArg</a>(inst, 2);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment">// Record given interleaving</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> lev;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="comment">// Push thread itself into interleaving set</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; lev.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(rthdnum);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="comment">// Find rthd of given vthd and push it into interleaving set</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">for</span> (std::vector&lt;std::string&gt;::iterator i = y.begin(); i != y.end(); i++)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; lev.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(<a class="code" href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a">vthdTorthd</a>[atoi((*i).c_str())]);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* memInst = <a class="code" href="classSVF_1_1MTAResultValidator.html#ab3ba3c6d9c40e97febdab0e7d4ad9a3e">getPreviousMemoryAccessInst</a>(inst);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> cts(rthdnum, x, memInst);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#a8452bf182f6f1e0f4c239f620ee803b1">instToTSMap</a>[memInst].insert(cts);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#ac4a7773211a9c842639ac25b1a504c7e">threadStmtToInterLeaving</a>[cts] = lev;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a334998718813a19a7697daf4ba282faf"><div class="ttname"><a href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">SVF::Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00032">BasicTypes.h:32</a></div></div>
528
+ <div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
528
529
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
529
530
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_a4ff908be3569c18528fb6f6ff98cd11a"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a4ff908be3569c18528fb6f6ff98cd11a">SVF::MTAResultValidator::getIntArg</a></div><div class="ttdeci">NodeID getIntArg(const Instruction *inst, unsigned int arg_num)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00059">MTAResultValidator.cpp:59</a></div></div>
530
531
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_ab3ba3c6d9c40e97febdab0e7d4ad9a3e"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ab3ba3c6d9c40e97febdab0e7d4ad9a3e">SVF::MTAResultValidator::getPreviousMemoryAccessInst</a></div><div class="ttdeci">const Instruction * getPreviousMemoryAccessInst(const Instruction *I)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00107">MTAResultValidator.cpp:107</a></div></div>
@@ -537,7 +538,6 @@ Static Private Attributes</h2></td></tr>
537
538
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
538
539
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_aecaf875c6c88f7ba6fa45540e8436f57"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">SVF::MTAResultValidator::getModule</a></div><div class="ttdeci">SVFModule * getModule() const</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00040">MTAResultValidator.h:40</a></div></div>
539
540
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_a8452bf182f6f1e0f4c239f620ee803b1"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a8452bf182f6f1e0f4c239f620ee803b1">SVF::MTAResultValidator::instToTSMap</a></div><div class="ttdeci">MHP::InstToThreadStmtSetMap instToTSMap</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00127">MTAResultValidator.h:127</a></div></div>
540
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a9c01c67684e99545d8e0403321594977"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a9c01c67684e99545d8e0403321594977">Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00029">BasicTypes.h:29</a></div></div>
541
541
  <div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
542
542
  <div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
543
543
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00745">SparseBitVector.h:745</a></div></div>
@@ -573,7 +573,8 @@ Static Private Attributes</h2></td></tr>
573
573
  </div><div class="memdoc">
574
574
 
575
575
  <p class="definition">Definition at line <a class="el" href="MTAResultValidator_8cpp_source.html#l00250">250</a> of file <a class="el" href="MTAResultValidator_8cpp_source.html">MTAResultValidator.cpp</a>.</p>
576
- <div class="fragment"><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;{</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="comment">// Collect call sites of all TCT_ACCESS function calls.</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">getModule</a>()-&gt;llvmFunBegin(); it != <a class="code" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); it++)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> fName = (*it)-&gt;getName().str();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span>(fName.find(<a class="code" href="classSVF_1_1MTAResultValidator.html#ae709b039a68f5600271c40903b1c0dbe">TCT_ACCESS</a>) != std::string::npos)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; F = (*it);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (!F)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">for</span> (Value::const_use_iterator it = F-&gt;use_begin(), ie = F-&gt;use_end(); it != ie; ++it)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a9c01c67684e99545d8e0403321594977">Use</a> *u = &amp;*it;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *user = u-&gt;getUser();</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(user);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vthdnum = <a class="code" href="classSVF_1_1MTAResultValidator.html#a4ff908be3569c18528fb6f6ff98cd11a">getIntArg</a>(inst, 0);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rthdnum = <a class="code" href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a">vthdTorthd</a>[vthdnum];</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; std::vector&lt;std::string&gt; x = <a class="code" href="classSVF_1_1MTAResultValidator.html#a1ac51d2847f9bdee27092ab22211bb61">getStringArg</a>(inst, 1);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">for</span> (std::vector&lt;std::string&gt;::iterator i = x.begin(); i != x.end(); i++)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#a542f2f41c90698270687fc7858a26555">rthdToChildren</a>[rthdnum].insert(<a class="code" href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a">vthdTorthd</a>[atoi((*i).c_str())]);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
576
+ <div class="fragment"><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;{</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="comment">// Collect call sites of all TCT_ACCESS function calls.</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">getModule</a>()-&gt;llvmFunBegin(); it != <a class="code" href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); it++)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> fName = (*it)-&gt;getName().str();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span>(fName.find(<a class="code" href="classSVF_1_1MTAResultValidator.html#ae709b039a68f5600271c40903b1c0dbe">TCT_ACCESS</a>) != std::string::npos)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; F = (*it);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (!F)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">for</span> (Value::const_use_iterator it = F-&gt;use_begin(), ie = F-&gt;use_end(); it != ie; ++it)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">Use</a> *u = &amp;*it;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *user = u-&gt;getUser();</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(user);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vthdnum = <a class="code" href="classSVF_1_1MTAResultValidator.html#a4ff908be3569c18528fb6f6ff98cd11a">getIntArg</a>(inst, 0);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rthdnum = <a class="code" href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a">vthdTorthd</a>[vthdnum];</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; std::vector&lt;std::string&gt; x = <a class="code" href="classSVF_1_1MTAResultValidator.html#a1ac51d2847f9bdee27092ab22211bb61">getStringArg</a>(inst, 1);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">for</span> (std::vector&lt;std::string&gt;::iterator i = x.begin(); i != x.end(); i++)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="classSVF_1_1MTAResultValidator.html#a542f2f41c90698270687fc7858a26555">rthdToChildren</a>[rthdnum].insert(<a class="code" href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a">vthdTorthd</a>[atoi((*i).c_str())]);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a334998718813a19a7697daf4ba282faf"><div class="ttname"><a href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">SVF::Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00032">BasicTypes.h:32</a></div></div>
577
+ <div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
577
578
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
578
579
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_a4ff908be3569c18528fb6f6ff98cd11a"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a4ff908be3569c18528fb6f6ff98cd11a">SVF::MTAResultValidator::getIntArg</a></div><div class="ttdeci">NodeID getIntArg(const Instruction *inst, unsigned int arg_num)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00059">MTAResultValidator.cpp:59</a></div></div>
579
580
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_a7382b2759b01b8382c5e59b21e7e262a"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a7382b2759b01b8382c5e59b21e7e262a">SVF::MTAResultValidator::vthdTorthd</a></div><div class="ttdeci">vthdTorthdMap vthdTorthd</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00138">MTAResultValidator.h:138</a></div></div>
@@ -581,7 +582,6 @@ Static Private Attributes</h2></td></tr>
581
582
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
582
583
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_aecaf875c6c88f7ba6fa45540e8436f57"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#aecaf875c6c88f7ba6fa45540e8436f57">SVF::MTAResultValidator::getModule</a></div><div class="ttdeci">SVFModule * getModule() const</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00040">MTAResultValidator.h:40</a></div></div>
583
584
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_a542f2f41c90698270687fc7858a26555"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a542f2f41c90698270687fc7858a26555">SVF::MTAResultValidator::rthdToChildren</a></div><div class="ttdeci">rthdToChildrenMap rthdToChildren</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00141">MTAResultValidator.h:141</a></div></div>
584
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a9c01c67684e99545d8e0403321594977"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a9c01c67684e99545d8e0403321594977">Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00029">BasicTypes.h:29</a></div></div>
585
585
  <div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
586
586
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
587
587
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_a1ac51d2847f9bdee27092ab22211bb61"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a1ac51d2847f9bdee27092ab22211bb61">SVF::MTAResultValidator::getStringArg</a></div><div class="ttdeci">std::vector&lt; std::string &gt; getStringArg(const Instruction *inst, unsigned int arg_num)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00068">MTAResultValidator.cpp:68</a></div></div>
@@ -939,16 +939,16 @@ Static Private Attributes</h2></td></tr>
939
939
  </div><div class="memdoc">
940
940
 
941
941
  <p class="definition">Definition at line <a class="el" href="MTAResultValidator_8cpp_source.html#l00068">68</a> of file <a class="el" href="MTAResultValidator_8cpp_source.html">MTAResultValidator.cpp</a>.</p>
942
- <div class="fragment"><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; assert(SVFUtil::isa&lt;CallInst&gt;(inst) &amp;&amp; <span class="stringliteral">&quot;getFirstIntArg: inst is not a callinst&quot;</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(inst);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; assert((arg_num &lt; cs.<a class="code" href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">arg_size</a>()) &amp;&amp; <span class="stringliteral">&quot;Does not has this argument&quot;</span>);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a255d310b1b573ca5c69fd715d7815d79">GetElementPtrInst</a>* gepinst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="SVF-FE_2BasicTypes_8h.html#a255d310b1b573ca5c69fd715d7815d79">GetElementPtrInst</a>&gt;(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(arg_num));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#aaca93e4092f0f73619d730f18b9e65de">Constant</a>* arrayinst = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="SVF-FE_2BasicTypes_8h.html#aaca93e4092f0f73619d730f18b9e65de">Constant</a>&gt;(gepinst-&gt;getOperand(0));</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a7d8006ceeea7c796af22da70c5cb93a0">ConstantDataArray</a>* cxtarray = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="SVF-FE_2BasicTypes_8h.html#a7d8006ceeea7c796af22da70c5cb93a0">ConstantDataArray</a>&gt;(arrayinst-&gt;getOperand(0));</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (!cxtarray)</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; std::vector&lt;std::string&gt; strvec;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> strvec;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</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="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a73db9ad234b263b6e644e4b38be14fe6">split</a>(vthdcxtstring, <span class="charliteral">&#39;,&#39;</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;}</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a7d8006ceeea7c796af22da70c5cb93a0"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a7d8006ceeea7c796af22da70c5cb93a0">ConstantDataArray</a></div><div class="ttdeci">llvm::ConstantDataArray ConstantDataArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00058">BasicTypes.h:58</a></div></div>
943
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a255d310b1b573ca5c69fd715d7815d79"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a255d310b1b573ca5c69fd715d7815d79">GetElementPtrInst</a></div><div class="ttdeci">llvm::GetElementPtrInst GetElementPtrInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
944
- <div class="ttc" id="classSVF_1_1MTAResultValidator_html_a73db9ad234b263b6e644e4b38be14fe6"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a73db9ad234b263b6e644e4b38be14fe6">SVF::MTAResultValidator::split</a></div><div class="ttdeci">std::vector&lt; std::string &gt; &amp; split(const std::string &amp;s, char delim, std::vector&lt; std::string &gt; &amp;elems)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00042">MTAResultValidator.cpp:42</a></div></div>
942
+ <div class="fragment"><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; assert(SVFUtil::isa&lt;CallInst&gt;(inst) &amp;&amp; <span class="stringliteral">&quot;getFirstIntArg: inst is not a callinst&quot;</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(inst);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; assert((arg_num &lt; cs.<a class="code" href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">arg_size</a>()) &amp;&amp; <span class="stringliteral">&quot;Does not has this argument&quot;</span>);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</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#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>&gt;(cs.<a class="code" href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">getArgument</a>(arg_num));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</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#a8182be247907420db00837cef9bcfa70">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="l00075"></a><span class="lineno"> 75</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#a8182be247907420db00837cef9bcfa70">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="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (!cxtarray)</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; std::vector&lt;std::string&gt; strvec;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> strvec;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</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="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MTAResultValidator.html#a73db9ad234b263b6e644e4b38be14fe6">split</a>(vthdcxtstring, <span class="charliteral">&#39;,&#39;</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;}</div><div class="ttc" id="classSVF_1_1MTAResultValidator_html_a73db9ad234b263b6e644e4b38be14fe6"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a73db9ad234b263b6e644e4b38be14fe6">SVF::MTAResultValidator::split</a></div><div class="ttdeci">std::vector&lt; std::string &gt; &amp; split(const std::string &amp;s, char delim, std::vector&lt; std::string &gt; &amp;elems)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00042">MTAResultValidator.cpp:42</a></div></div>
945
943
  <div class="ttc" id="classSVF_1_1CallSite_html_a26a594d36bbb5b77e7085502812d9ca2"><div class="ttname"><a href="classSVF_1_1CallSite.html#a26a594d36bbb5b77e7085502812d9ca2">SVF::CallSite::getArgument</a></div><div class="ttdeci">Value * getArgument(unsigned ArgNo) const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00214">BasicTypes.h:214</a></div></div>
944
+ <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="SVF-FE_2BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
945
+ <div class="ttc" id="namespaceSVF_html_ac4e93e1fec646ff222940a663843921b"><div class="ttname"><a href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">SVF::GetElementPtrInst</a></div><div class="ttdeci">llvm::GetElementPtrInst GetElementPtrInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
946
946
  <div class="ttc" id="classSVF_1_1CallSite_html_a145676880fce313b4634d14118476c27"><div class="ttname"><a href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">SVF::CallSite::arg_size</a></div><div class="ttdeci">unsigned arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00230">BasicTypes.h:230</a></div></div>
947
+ <div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00064">BasicTypes.h:64</a></div></div>
947
948
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00217">SVFUtil.h:217</a></div></div>
948
949
  <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00201">BasicTypes.h:201</a></div></div>
949
950
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
950
951
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
951
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_aaca93e4092f0f73619d730f18b9e65de"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#aaca93e4092f0f73619d730f18b9e65de">Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
952
952
  </div><!-- fragment -->
953
953
  </div>
954
954
  </div>
@@ -445,7 +445,8 @@ Additional Inherited Members</h2></td></tr>
445
445
  <p>Iterate every memory access pairs write vs read write vs write </p>
446
446
 
447
447
  <p class="definition">Definition at line <a class="el" href="MTAStat_8cpp_source.html#l00092">92</a> of file <a class="el" href="MTAStat_8cpp_source.html">MTAStat.cpp</a>.</p>
448
- <div class="fragment"><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#aa78f442ee8d7272e98396fd86dea4993">Options::AllPairMHP</a>)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classSVF_1_1MTAStat.html#a424ec97192aa5681f9f92a0a6f3ee8a8">InstSet</a> instSet1;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1MTAStat.html#a424ec97192aa5681f9f92a0a6f3ee8a8">InstSet</a> instSet2;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* mod = mhp-&gt;<a class="code" href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">getTCT</a>()-&gt;<a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = mod-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), E = mod-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = (*F);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* llvmfun = fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(fun))</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span>(!mhp-&gt;<a class="code" href="classSVF_1_1MHP.html#a1cfec64cc65abcbc5ba32695850bfb48">isConnectedfromMain</a>(llvmfun))</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a9a4df49ba7ca3ad32d65e5ecf2dad707">const_inst_iterator</a> II = inst_begin(llvmfun), E = inst_end(llvmfun); II != E; ++II)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadInst&gt;(inst))</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; instSet1.insert(inst);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;StoreInst&gt;(inst))</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; instSet1.insert(inst);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; instSet2.insert(inst);</div><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; }</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;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">for</span>(InstSet::const_iterator it1 = instSet1.begin(), eit1 = instSet1.end(); it1!=eit1; ++it1)</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; <span class="keywordflow">for</span>(InstSet::const_iterator it2 = instSet2.begin(), eit2 = instSet2.end(); it2!=eit2; ++it2)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; mhp-&gt;<a class="code" href="classSVF_1_1MHP.html#a9989f2d200cec6c387d63f452b8eac6b">mayHappenInParallel</a>(*it1,*it2);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>.clear();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>.clear();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>.clear();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalMHPQueries&quot;</span>] = mhp-&gt;<a class="code" href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">numOfTotalQueries</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfMHPPairs&quot;</span>] = mhp-&gt;<a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalLockQueries&quot;</span>] = lsa-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#ad648ad9cda4070f9aec1addef0067627">numOfTotalQueries</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfLockedPairs&quot;</span>] = lsa-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a80c56ebc6b9b594e97b56767f451ff8b">numOfLockedQueries</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfCxtLocks&quot;</span>] = lsa-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a3df63f936d488166109d73bdcf0437d5">getNumOfCxtLocks</a>();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfNewSVFGEdges&quot;</span>] = <a class="code" href="classSVF_1_1MTASVFGBuilder.html#a019a4597074fdad6e51d936ed4ead0d9">MTASVFGBuilder::numOfNewSVFGEdges</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfRemovedEdges&quot;</span>] = <a class="code" href="classSVF_1_1MTASVFGBuilder.html#a0319d1d2e78c79f9943f2e2f65da26ed">MTASVFGBuilder::numOfRemovedSVFGEdges</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfRemovedPTS&quot;</span>] = <a class="code" href="classSVF_1_1MTASVFGBuilder.html#a07c3f5fa2e0092dac28521cf901a26cf">MTASVFGBuilder::numOfRemovedPTS</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;InterlevAnaTime&quot;</span>] = mhp-&gt;<a class="code" href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">interleavingTime</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;LockAnaTime&quot;</span>] = lsa-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#adadee129c04b82576b4ca3c7594cdcb2">lockTime</a>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;InterlevQueryTime&quot;</span>] = mhp-&gt;<a class="code" href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">interleavingQueriesTime</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;LockQueryTime&quot;</span>] = lsa-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a853ab1a953ddcf76841016a833e43f3d">lockQueriesTime</a>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;MHPAnalysisTime&quot;</span>] = <a class="code" href="classSVF_1_1MTAStat.html#a56411f7e64febab8aab94a4a9207e5d8">MHPTime</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;MFSPTATime&quot;</span>] = <a class="code" href="classSVF_1_1MTAStat.html#a030671ec358a93e3c2887f048dcfcce8">FSMPTATime</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n****MHP Stmt Pairs Statistics****\n&quot;</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">PTAStat::printStat</a>();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;}</div><div class="ttc" id="classSVF_1_1MTASVFGBuilder_html_a019a4597074fdad6e51d936ed4ead0d9"><div class="ttname"><a href="classSVF_1_1MTASVFGBuilder.html#a019a4597074fdad6e51d936ed4ead0d9">SVF::MTASVFGBuilder::numOfNewSVFGEdges</a></div><div class="ttdeci">static u32_t numOfNewSVFGEdges</div><div class="ttdoc">Number of newly added SVFG edges. </div><div class="ttdef"><b>Definition:</b> <a href="FSMPTA_8h_source.html#l00094">FSMPTA.h:94</a></div></div>
448
+ <div class="fragment"><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#aa78f442ee8d7272e98396fd86dea4993">Options::AllPairMHP</a>)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classSVF_1_1MTAStat.html#a424ec97192aa5681f9f92a0a6f3ee8a8">InstSet</a> instSet1;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1MTAStat.html#a424ec97192aa5681f9f92a0a6f3ee8a8">InstSet</a> instSet2;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* mod = mhp-&gt;<a class="code" href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">getTCT</a>()-&gt;<a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = mod-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), E = mod-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = (*F);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* llvmfun = fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(fun))</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span>(!mhp-&gt;<a class="code" href="classSVF_1_1MHP.html#a1cfec64cc65abcbc5ba32695850bfb48">isConnectedfromMain</a>(llvmfun))</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a032e8478a7b6a8bb0b7755c98a7bce91">const_inst_iterator</a> II = inst_begin(llvmfun), E = inst_end(llvmfun); II != E; ++II)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadInst&gt;(inst))</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; instSet1.insert(inst);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;StoreInst&gt;(inst))</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; instSet1.insert(inst);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; instSet2.insert(inst);</div><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; }</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;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">for</span>(InstSet::const_iterator it1 = instSet1.begin(), eit1 = instSet1.end(); it1!=eit1; ++it1)</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; <span class="keywordflow">for</span>(InstSet::const_iterator it2 = instSet2.begin(), eit2 = instSet2.end(); it2!=eit2; ++it2)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; mhp-&gt;<a class="code" href="classSVF_1_1MHP.html#a9989f2d200cec6c387d63f452b8eac6b">mayHappenInParallel</a>(*it1,*it2);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>.clear();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>.clear();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>.clear();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalMHPQueries&quot;</span>] = mhp-&gt;<a class="code" href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">numOfTotalQueries</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfMHPPairs&quot;</span>] = mhp-&gt;<a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalLockQueries&quot;</span>] = lsa-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#ad648ad9cda4070f9aec1addef0067627">numOfTotalQueries</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfLockedPairs&quot;</span>] = lsa-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a80c56ebc6b9b594e97b56767f451ff8b">numOfLockedQueries</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfCxtLocks&quot;</span>] = lsa-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a3df63f936d488166109d73bdcf0437d5">getNumOfCxtLocks</a>();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfNewSVFGEdges&quot;</span>] = <a class="code" href="classSVF_1_1MTASVFGBuilder.html#a019a4597074fdad6e51d936ed4ead0d9">MTASVFGBuilder::numOfNewSVFGEdges</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfRemovedEdges&quot;</span>] = <a class="code" href="classSVF_1_1MTASVFGBuilder.html#a0319d1d2e78c79f9943f2e2f65da26ed">MTASVFGBuilder::numOfRemovedSVFGEdges</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfRemovedPTS&quot;</span>] = <a class="code" href="classSVF_1_1MTASVFGBuilder.html#a07c3f5fa2e0092dac28521cf901a26cf">MTASVFGBuilder::numOfRemovedPTS</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;InterlevAnaTime&quot;</span>] = mhp-&gt;<a class="code" href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">interleavingTime</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;LockAnaTime&quot;</span>] = lsa-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#adadee129c04b82576b4ca3c7594cdcb2">lockTime</a>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;InterlevQueryTime&quot;</span>] = mhp-&gt;<a class="code" href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">interleavingQueriesTime</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;LockQueryTime&quot;</span>] = lsa-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a853ab1a953ddcf76841016a833e43f3d">lockQueriesTime</a>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;MHPAnalysisTime&quot;</span>] = <a class="code" href="classSVF_1_1MTAStat.html#a56411f7e64febab8aab94a4a9207e5d8">MHPTime</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>[<span class="stringliteral">&quot;MFSPTATime&quot;</span>] = <a class="code" href="classSVF_1_1MTAStat.html#a030671ec358a93e3c2887f048dcfcce8">FSMPTATime</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n****MHP Stmt Pairs Statistics****\n&quot;</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">PTAStat::printStat</a>();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;}</div><div class="ttc" id="classSVF_1_1MTASVFGBuilder_html_a019a4597074fdad6e51d936ed4ead0d9"><div class="ttname"><a href="classSVF_1_1MTASVFGBuilder.html#a019a4597074fdad6e51d936ed4ead0d9">SVF::MTASVFGBuilder::numOfNewSVFGEdges</a></div><div class="ttdeci">static u32_t numOfNewSVFGEdges</div><div class="ttdoc">Number of newly added SVFG edges. </div><div class="ttdef"><b>Definition:</b> <a href="FSMPTA_8h_source.html#l00094">FSMPTA.h:94</a></div></div>
449
+ <div class="ttc" id="namespaceSVF_html_a032e8478a7b6a8bb0b7755c98a7bce91"><div class="ttname"><a href="namespaceSVF.html#a032e8478a7b6a8bb0b7755c98a7bce91">SVF::const_inst_iterator</a></div><div class="ttdeci">llvm::const_inst_iterator const_inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00117">BasicTypes.h:117</a></div></div>
449
450
  <div class="ttc" id="classSVF_1_1MHP_html_ab7d9fe837844197b7acdc0493a50aaa5"><div class="ttname"><a href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">SVF::MHP::interleavingQueriesTime</a></div><div class="ttdeci">double interleavingQueriesTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00264">MHP.h:264</a></div></div>
450
451
  <div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00147">SVFModule.h:147</a></div></div>
451
452
  <div class="ttc" id="classSVF_1_1MHP_html_aca306b97c6dcd47a8f407038436473a2"><div class="ttname"><a href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">SVF::MHP::interleavingTime</a></div><div class="ttdeci">double interleavingTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00263">MHP.h:263</a></div></div>
@@ -471,7 +472,6 @@ Additional Inherited Members</h2></td></tr>
471
472
  <div class="ttc" id="classSVF_1_1LockAnalysis_html_a80c56ebc6b9b594e97b56767f451ff8b"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a80c56ebc6b9b594e97b56767f451ff8b">SVF::LockAnalysis::numOfLockedQueries</a></div><div class="ttdeci">u32_t numOfLockedQueries</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00494">LockAnalysis.h:494</a></div></div>
472
473
  <div class="ttc" id="classSVF_1_1MHP_html_a26ae18993915d76b704232cded9811c2"><div class="ttname"><a href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">SVF::MHP::numOfTotalQueries</a></div><div class="ttdeci">u32_t numOfTotalQueries</div><div class="ttdoc">Total number of queries. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00261">MHP.h:261</a></div></div>
473
474
  <div class="ttc" id="classSVF_1_1MHP_html_a033936547612c54326a604f0ff1e39a6"><div class="ttname"><a href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">SVF::MHP::getTCT</a></div><div class="ttdeci">TCT * getTCT() const</div><div class="ttdoc">Get Thread Creation Tree. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00060">MHP.h:60</a></div></div>
474
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a9a4df49ba7ca3ad32d65e5ecf2dad707"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a9a4df49ba7ca3ad32d65e5ecf2dad707">const_inst_iterator</a></div><div class="ttdeci">llvm::const_inst_iterator const_inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
475
475
  <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00142">BasicTypes.h:142</a></div></div>
476
476
  <div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
477
477
  <div class="ttc" id="classSVF_1_1Options_html_aa78f442ee8d7272e98396fd86dea4993"><div class="ttname"><a href="classSVF_1_1Options.html#aa78f442ee8d7272e98396fd86dea4993">SVF::Options::AllPairMHP</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; AllPairMHP</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00189">Options.h:189</a></div></div>
@@ -91,7 +91,7 @@ Public Member Functions</h2></td></tr>
91
91
  <tr class="separator:a8fe74477a43f80104fb3461d006ad392"><td class="memSeparator" colspan="2">&#160;</td></tr>
92
92
  <tr class="memitem:a8c04750179ee48d283c5db4d84b3eca1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MergeFunctionRets.html#a8c04750179ee48d283c5db4d84b3eca1">UnifyFunctionExit</a> (<a class="el" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &amp;module)</td></tr>
93
93
  <tr class="separator:a8c04750179ee48d283c5db4d84b3eca1"><td class="memSeparator" colspan="2">&#160;</td></tr>
94
- <tr class="memitem:a0644ac0f560911632855d9129f3d71ca"><td class="memItemLeft" align="right" valign="top"><a class="el" href="SVF-FE_2BasicTypes_8h.html#a66384f66e64322087e7bdab0b50840f2">UnifyFunctionExitNodes</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MergeFunctionRets.html#a0644ac0f560911632855d9129f3d71ca">getUnifyExit</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &amp;fn)</td></tr>
94
+ <tr class="memitem:a0644ac0f560911632855d9129f3d71ca"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ae5853f7df76735b195ff93949ca4256b">UnifyFunctionExitNodes</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MergeFunctionRets.html#a0644ac0f560911632855d9129f3d71ca">getUnifyExit</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &amp;fn)</td></tr>
95
95
  <tr class="memdesc:a0644ac0f560911632855d9129f3d71ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get Unified Exit basic block node. <a href="#a0644ac0f560911632855d9129f3d71ca">More...</a><br /></td></tr>
96
96
  <tr class="separator:a0644ac0f560911632855d9129f3d71ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
97
97
  </table><table class="memberdecls">
@@ -128,7 +128,7 @@ Static Public Attributes</h2></td></tr>
128
128
  </div><div class="memdoc">
129
129
 
130
130
  <p class="definition">Definition at line <a class="el" href="BreakConstantExpr_8h_source.html#l00063">63</a> of file <a class="el" href="BreakConstantExpr_8h_source.html">BreakConstantExpr.h</a>.</p>
131
- <div class="fragment"><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;: <a class="code" href="SVF-FE_2BasicTypes_8h.html#a2e0fa4afbccc902de3ae55c65fb8b007">ModulePass</a>(<a class="code" href="classSVF_1_1MergeFunctionRets.html#a7a763ae6c9d3c72345495f01b0b4b458">ID</a>) {}</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a2e0fa4afbccc902de3ae55c65fb8b007"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a2e0fa4afbccc902de3ae55c65fb8b007">ModulePass</a></div><div class="ttdeci">llvm::ModulePass ModulePass</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00030">BasicTypes.h:30</a></div></div>
131
+ <div class="fragment"><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;: <a class="code" href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">ModulePass</a>(<a class="code" href="classSVF_1_1MergeFunctionRets.html#a7a763ae6c9d3c72345495f01b0b4b458">ID</a>) {}</div><div class="ttc" id="namespaceSVF_html_ac226d84f86637126d17f6814632c8a90"><div class="ttname"><a href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">SVF::ModulePass</a></div><div class="ttdeci">llvm::ModulePass ModulePass</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00033">BasicTypes.h:33</a></div></div>
132
132
  <div class="ttc" id="classSVF_1_1MergeFunctionRets_html_a7a763ae6c9d3c72345495f01b0b4b458"><div class="ttname"><a href="classSVF_1_1MergeFunctionRets.html#a7a763ae6c9d3c72345495f01b0b4b458">SVF::MergeFunctionRets::ID</a></div><div class="ttdeci">static char ID</div><div class="ttdef"><b>Definition:</b> <a href="BreakConstantExpr_8h_source.html#l00062">BreakConstantExpr.h:62</a></div></div>
133
133
  </div><!-- fragment -->
134
134
  </div>
@@ -171,7 +171,7 @@ Static Public Attributes</h2></td></tr>
171
171
  <td class="mlabels-left">
172
172
  <table class="memname">
173
173
  <tr>
174
- <td class="memname"><a class="el" href="SVF-FE_2BasicTypes_8h.html#a66384f66e64322087e7bdab0b50840f2">UnifyFunctionExitNodes</a>* SVF::MergeFunctionRets::getUnifyExit </td>
174
+ <td class="memname"><a class="el" href="namespaceSVF.html#ae5853f7df76735b195ff93949ca4256b">UnifyFunctionExitNodes</a>* SVF::MergeFunctionRets::getUnifyExit </td>
175
175
  <td>(</td>
176
176
  <td class="paramtype">const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &amp;&#160;</td>
177
177
  <td class="paramname"><em>fn</em></td><td>)</td>
@@ -947,10 +947,9 @@ Private Attributes</h2></td></tr>
947
947
  <p>TODO: handle indirect call here for the fork Fun </p>
948
948
 
949
949
  <p class="definition">Definition at line <a class="el" href="PCG_8cpp_source.html#l00069">69</a> of file <a class="el" href="PCG_8cpp_source.html">PCG.cpp</a>.</p>
950
- <div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVFModule::const_iterator</a> fi = module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), efi = module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); fi != efi; ++fi)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = (*fi)-&gt;getLLVMFun();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a> II = inst_begin((*fi)-&gt;getLLVMFun()), E = inst_end((*fi)-&gt;getLLVMFun()); II != E; ++II)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PCG.html#a8215dc3643d1c4fb3d489e80cd3db336">tdAPI</a>-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">isTDFork</a>(inst))</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* forkVal = <a class="code" href="classSVF_1_1PCG.html#a8215dc3643d1c4fb3d489e80cd3db336">tdAPI</a>-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a7ddc0c71aeae315af21972a4905b3456">getForkedFun</a>(inst);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* forkFun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad98299033577f1e7f4e9bc73dff3b253">getLLVMFunction</a>(forkVal))</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; <a class="code" href="classSVF_1_1PCG.html#a1d946482cce92f7b1718a2a8c178be0b">addSpawnsite</a>(inst);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classSVF_1_1PCG.html#a3f7f0c7aaa768f7e834b4763b18d8223">spawners</a>.insert(fun);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1PCG.html#a7191718edabfd8ce2df5bfbea683c1fa">spawnees</a>.insert(forkFun);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;pthread create&quot;</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(inst) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;invoke spawnee indirectly&quot;</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ad98299033577f1e7f4e9bc73dff3b253"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ad98299033577f1e7f4e9bc73dff3b253">SVF::SVFUtil::getLLVMFunction</a></div><div class="ttdeci">const Function * getLLVMFunction(const Value *val)</div><div class="ttdoc">Return LLVM function if this value is. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00480">SVFUtil.h:480</a></div></div>
950
+ <div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVFModule::const_iterator</a> fi = module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), efi = module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); fi != efi; ++fi)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = (*fi)-&gt;getLLVMFun();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin((*fi)-&gt;getLLVMFun()), E = inst_end((*fi)-&gt;getLLVMFun()); II != E; ++II)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PCG.html#a8215dc3643d1c4fb3d489e80cd3db336">tdAPI</a>-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">isTDFork</a>(inst))</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* forkVal = <a class="code" href="classSVF_1_1PCG.html#a8215dc3643d1c4fb3d489e80cd3db336">tdAPI</a>-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a7ddc0c71aeae315af21972a4905b3456">getForkedFun</a>(inst);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* forkFun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad98299033577f1e7f4e9bc73dff3b253">getLLVMFunction</a>(forkVal))</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; <a class="code" href="classSVF_1_1PCG.html#a1d946482cce92f7b1718a2a8c178be0b">addSpawnsite</a>(inst);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classSVF_1_1PCG.html#a3f7f0c7aaa768f7e834b4763b18d8223">spawners</a>.insert(fun);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1PCG.html#a7191718edabfd8ce2df5bfbea683c1fa">spawnees</a>.insert(forkFun);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;pthread create&quot;</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(inst) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;invoke spawnee indirectly&quot;</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ad98299033577f1e7f4e9bc73dff3b253"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ad98299033577f1e7f4e9bc73dff3b253">SVF::SVFUtil::getLLVMFunction</a></div><div class="ttdeci">const Function * getLLVMFunction(const Value *val)</div><div class="ttdoc">Return LLVM function if this value is. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00480">SVFUtil.h:480</a></div></div>
951
951
  <div class="ttc" id="classSVF_1_1ThreadAPI_html_a9da276dca5092d18f4f22d32e5ab6cdf"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">SVF::ThreadAPI::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *inst) const</div><div class="ttdoc">Return true if this call create a new thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00129">ThreadAPI.h:129</a></div></div>
952
952
  <div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00147">SVFModule.h:147</a></div></div>
953
- <div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a160997c1a0fb1000445d04b89d9c1323"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00111">BasicTypes.h:111</a></div></div>
954
953
  <div class="ttc" id="classSVF_1_1PCG_html_a3f7f0c7aaa768f7e834b4763b18d8223"><div class="ttname"><a href="classSVF_1_1PCG.html#a3f7f0c7aaa768f7e834b4763b18d8223">SVF::PCG::spawners</a></div><div class="ttdeci">FunSet spawners</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00039">PCG.h:39</a></div></div>
955
954
  <div class="ttc" id="classSVF_1_1PCG_html_a7191718edabfd8ce2df5bfbea683c1fa"><div class="ttname"><a href="classSVF_1_1PCG.html#a7191718edabfd8ce2df5bfbea683c1fa">SVF::PCG::spawnees</a></div><div class="ttdeci">FunSet spawnees</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00040">PCG.h:40</a></div></div>
956
955
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00067">SVFUtil.cpp:67</a></div></div>
@@ -961,6 +960,7 @@ Private Attributes</h2></td></tr>
961
960
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00390">SVFUtil.cpp:390</a></div></div>
962
961
  <div class="ttc" id="classSVF_1_1PCG_html_a8215dc3643d1c4fb3d489e80cd3db336"><div class="ttname"><a href="classSVF_1_1PCG.html#a8215dc3643d1c4fb3d489e80cd3db336">SVF::PCG::tdAPI</a></div><div class="ttdeci">ThreadAPI * tdAPI</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00046">PCG.h:46</a></div></div>
963
962
  <div class="ttc" id="classSVF_1_1SVFModule_html_a58d03edb6ff85f4943135478f113df31"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">SVF::SVFModule::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00155">SVFModule.h:155</a></div></div>
963
+ <div class="ttc" id="namespaceSVF_html_a255af6ff30782cb9a548feadb0fe7d6b"><div class="ttname"><a href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">SVF::inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
964
964
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
965
965
  <div class="ttc" id="classSVF_1_1SVFModule_html_afcf2978f32e15127fb093405dc17d7f1"><div class="ttname"><a href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVF::SVFModule::const_iterator</a></div><div class="ttdeci">FunctionSetType::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00052">SVFModule.h:52</a></div></div>
966
966
  <div class="ttc" id="classSVF_1_1PCG_html_a1d946482cce92f7b1718a2a8c178be0b"><div class="ttname"><a href="classSVF_1_1PCG.html#a1d946482cce92f7b1718a2a8c178be0b">SVF::PCG::addSpawnsite</a></div><div class="ttdeci">bool addSpawnsite(const Instruction *callInst)</div><div class="ttdoc">Add/search spawn sites which directly or indirectly create a thread. </div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00087">PCG.h:87</a></div></div>