svf-tools 1.0.604 → 1.0.605

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/Casting_8h.html +3 -0
  10. package/SVF-doxygen/html/html/Casting_8h_source.html +22 -22
  11. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +15 -15
  13. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  14. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +82 -74
  18. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +14 -14
  19. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +9 -9
  20. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +27 -21
  22. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +18 -18
  23. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +2 -2
  28. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
  29. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/html/MHP_8cpp_source.html +33 -38
  31. package/SVF-doxygen/html/html/MHP_8h_source.html +22 -22
  32. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
  34. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +12 -11
  38. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +11 -11
  39. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -2
  40. package/SVF-doxygen/html/html/SVFValue_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +8 -1
  43. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +11 -11
  44. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +8 -8
  45. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +2 -2
  50. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -1
  51. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
  52. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +5 -5
  53. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +1 -1
  54. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +2 -2
  55. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +1 -1
  56. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  57. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +2 -2
  58. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +19 -19
  59. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +11 -11
  60. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  61. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +228 -220
  62. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -2
  63. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +17 -17
  64. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +64 -58
  65. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  66. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +30 -38
  67. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  68. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +3 -3
  69. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +2 -2
  70. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -1
  71. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
  72. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +67 -83
  73. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  75. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +4 -4
  76. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +53 -53
  77. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
  78. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +1 -1
  79. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
  80. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +5 -5
  81. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +1 -1
  82. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +46 -33
  83. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +4 -4
  84. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  85. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +8 -1
  86. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +32 -32
  87. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  88. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +4 -4
  92. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  93. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +2 -2
  94. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +7 -7
  95. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +50 -17
  96. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +2 -2
  97. package/SVF-doxygen/html/html/namespacemembers_func_i.html +7 -7
  98. package/SVF-doxygen/html/html/namespacemembers_i.html +8 -8
  99. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  100. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  101. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val.html +3 -3
  102. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html +3 -3
  103. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty.html +2 -2
  104. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl.html +2 -2
  105. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html +2 -2
  106. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html +2 -2
  107. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html +2 -2
  108. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html +2 -2
  109. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01std_1_1unique__ptr_3_01From_01_4_01_4.html +4 -4
  110. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap.html +2 -2
  111. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html +2 -2
  112. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__simple__type.html +2 -2
  113. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  114. package/include/DDA/DDAVFSolver.h +4 -8
  115. package/include/Graphs/SVFGOPT.h +2 -2
  116. package/include/MTA/MTAResultValidator.h +1 -1
  117. package/include/Util/Casting.h +7 -0
  118. package/lib/CFL/CFLStat.cpp +1 -1
  119. package/lib/DDA/ContextDDA.cpp +1 -1
  120. package/lib/Graphs/ConsG.cpp +2 -2
  121. package/lib/Graphs/SVFGOPT.cpp +15 -17
  122. package/lib/MTA/FSMPTA.cpp +7 -6
  123. package/lib/MTA/LockAnalysis.cpp +1 -1
  124. package/lib/MTA/MHP.cpp +215 -227
  125. package/lib/MemoryModel/LocationSet.cpp +1 -1
  126. package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
  127. package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
  128. package/lib/SABER/SrcSnkDDA.cpp +3 -3
  129. package/lib/SVF-LLVM/LLVMModule.cpp +1 -1
  130. package/lib/SVF-LLVM/LLVMUtil.cpp +1 -1
  131. package/lib/SVF-LLVM/SVFIRBuilder.cpp +4 -4
  132. package/lib/SVF-LLVM/SymbolTableBuilder.cpp +3 -2
  133. package/lib/SVFIR/SymbolTableInfo.cpp +1 -1
  134. package/lib/WPA/AndersenSFR.cpp +1 -1
  135. package/lib/WPA/FlowSensitive.cpp +23 -22
  136. package/package.json +1 -1
@@ -82,7 +82,7 @@ Static Public Member Functions</h2></td></tr>
82
82
  struct SVF::SVFUtil::cast_convert_val&lt; To, FromTy, FromTy &gt;</h3>
83
83
 
84
84
 
85
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00326">326</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
85
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00333">333</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
86
86
  </div><h2 class="groupheader">Member Function Documentation</h2>
87
87
  <a id="a2dd56ef15d86f61c7fef34dc15173e4a"></a>
88
88
  <h2 class="memtitle"><span class="permalink"><a href="#a2dd56ef15d86f61c7fef34dc15173e4a">&#9670;&nbsp;</a></span>doit()</h2>
@@ -110,8 +110,8 @@ template&lt;class To , class FromTy &gt; </div>
110
110
  </table>
111
111
  </div><div class="memdoc">
112
112
 
113
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00329">329</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
114
- <div class="fragment"><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;To, FromTy&gt;::ret_type</a> Res2</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; = (<span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;To, FromTy&gt;::ret_type</a>)const_cast&lt;FromTy&amp;&gt;(Val);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">return</span> Res2;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div><div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty_html_aea91708cabb8176b031f1c1fdb89a15b"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">SVF::SVFUtil::cast_retty::ret_type</a></div><div class="ttdeci">typename cast_retty_wrap&lt; To, From, typename simplify_type&lt; From &gt;::SimpleType &gt;::ret_type ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00309">Casting.h:309</a></div></div>
113
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00336">336</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
114
+ <div class="fragment"><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;To, FromTy&gt;::ret_type</a> Res2</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; = (<span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty&lt;To, FromTy&gt;::ret_type</a>)const_cast&lt;FromTy&amp;&gt;(Val);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">return</span> Res2;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div><div class="ttc" id="structSVF_1_1SVFUtil_1_1cast__retty_html_aea91708cabb8176b031f1c1fdb89a15b"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">SVF::SVFUtil::cast_retty::ret_type</a></div><div class="ttdeci">typename cast_retty_wrap&lt; To, From, typename simplify_type&lt; From &gt;::SimpleType &gt;::ret_type ret_type</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00316">Casting.h:316</a></div></div>
115
115
  </div><!-- fragment -->
116
116
  </div>
117
117
  </div>
@@ -82,7 +82,7 @@ Public Types</h2></td></tr>
82
82
  struct SVF::SVFUtil::cast_retty&lt; To, From &gt;</h3>
83
83
 
84
84
 
85
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00250">250</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
85
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00257">257</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
86
86
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
87
87
  <a id="aea91708cabb8176b031f1c1fdb89a15b"></a>
88
88
  <h2 class="memtitle"><span class="permalink"><a href="#aea91708cabb8176b031f1c1fdb89a15b">&#9670;&nbsp;</a></span>ret_type</h2>
@@ -98,7 +98,7 @@ template&lt;class To, class From&gt; </div>
98
98
  </table>
99
99
  </div><div class="memdoc">
100
100
 
101
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00309">309</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
101
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00316">316</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
102
102
 
103
103
  </div>
104
104
  </div>
@@ -82,7 +82,7 @@ Public Types</h2></td></tr>
82
82
  struct SVF::SVFUtil::cast_retty_impl&lt; To, From &gt;</h3>
83
83
 
84
84
 
85
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00254">254</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
85
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00261">261</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
86
86
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
87
87
  <a id="a5f8f6d651931eba7e0fa14c26a691a04"></a>
88
88
  <h2 class="memtitle"><span class="permalink"><a href="#a5f8f6d651931eba7e0fa14c26a691a04">&#9670;&nbsp;</a></span>ret_type</h2>
@@ -98,7 +98,7 @@ template&lt;class To, class From&gt; </div>
98
98
  </table>
99
99
  </div><div class="memdoc">
100
100
 
101
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00256">256</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
101
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00263">263</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
102
102
 
103
103
  </div>
104
104
  </div>
@@ -82,7 +82,7 @@ Public Types</h2></td></tr>
82
82
  struct SVF::SVFUtil::cast_retty_impl&lt; To, From * &gt;</h3>
83
83
 
84
84
 
85
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00263">263</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
85
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00270">270</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
86
86
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
87
87
  <a id="a86c02dc15b65d0c052ea4447b3fb6333"></a>
88
88
  <h2 class="memtitle"><span class="permalink"><a href="#a86c02dc15b65d0c052ea4447b3fb6333">&#9670;&nbsp;</a></span>ret_type</h2>
@@ -98,7 +98,7 @@ template&lt;class To , class From &gt; </div>
98
98
  </table>
99
99
  </div><div class="memdoc">
100
100
 
101
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00265">265</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
101
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00272">272</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
102
102
 
103
103
  </div>
104
104
  </div>
@@ -82,7 +82,7 @@ Public Types</h2></td></tr>
82
82
  struct SVF::SVFUtil::cast_retty_impl&lt; To, const From &gt;</h3>
83
83
 
84
84
 
85
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00258">258</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
85
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00265">265</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
86
86
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
87
87
  <a id="ad0bc349135b60cc51fd040b615a979f7"></a>
88
88
  <h2 class="memtitle"><span class="permalink"><a href="#ad0bc349135b60cc51fd040b615a979f7">&#9670;&nbsp;</a></span>ret_type</h2>
@@ -98,7 +98,7 @@ template&lt;class To , class From &gt; </div>
98
98
  </table>
99
99
  </div><div class="memdoc">
100
100
 
101
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00260">260</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
101
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00267">267</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
102
102
 
103
103
  </div>
104
104
  </div>
@@ -82,7 +82,7 @@ Public Types</h2></td></tr>
82
82
  struct SVF::SVFUtil::cast_retty_impl&lt; To, const From * &gt;</h3>
83
83
 
84
84
 
85
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00268">268</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
85
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00275">275</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
86
86
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
87
87
  <a id="a98a60de95a331a34dcbad6da9961a9b7"></a>
88
88
  <h2 class="memtitle"><span class="permalink"><a href="#a98a60de95a331a34dcbad6da9961a9b7">&#9670;&nbsp;</a></span>ret_type</h2>
@@ -98,7 +98,7 @@ template&lt;class To , class From &gt; </div>
98
98
  </table>
99
99
  </div><div class="memdoc">
100
100
 
101
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00270">270</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
101
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00277">277</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
102
102
 
103
103
  </div>
104
104
  </div>
@@ -82,7 +82,7 @@ Public Types</h2></td></tr>
82
82
  struct SVF::SVFUtil::cast_retty_impl&lt; To, const From *const &gt;</h3>
83
83
 
84
84
 
85
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00273">273</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
85
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00280">280</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
86
86
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
87
87
  <a id="add8668ca96bbf0808c146cc81c62267c"></a>
88
88
  <h2 class="memtitle"><span class="permalink"><a href="#add8668ca96bbf0808c146cc81c62267c">&#9670;&nbsp;</a></span>ret_type</h2>
@@ -98,7 +98,7 @@ template&lt;class To , class From &gt; </div>
98
98
  </table>
99
99
  </div><div class="memdoc">
100
100
 
101
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00275">275</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
101
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00282">282</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
102
102
 
103
103
  </div>
104
104
  </div>
@@ -90,7 +90,7 @@ Private Types</h2></td></tr>
90
90
  struct SVF::SVFUtil::cast_retty_impl&lt; To, std::unique_ptr&lt; From &gt; &gt;</h3>
91
91
 
92
92
 
93
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00279">279</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
93
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00286">286</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
94
94
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
95
95
  <a id="a9d08abc346f3b77c487eba144f3cbd8d"></a>
96
96
  <h2 class="memtitle"><span class="permalink"><a href="#a9d08abc346f3b77c487eba144f3cbd8d">&#9670;&nbsp;</a></span>PointerType</h2>
@@ -114,7 +114,7 @@ template&lt;class To , class From &gt; </div>
114
114
  </table>
115
115
  </div><div class="memdoc">
116
116
 
117
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00282">282</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
117
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00289">289</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
118
118
 
119
119
  </div>
120
120
  </div>
@@ -140,7 +140,7 @@ template&lt;class To , class From &gt; </div>
140
140
  </table>
141
141
  </div><div class="memdoc">
142
142
 
143
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00283">283</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
143
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00290">290</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
144
144
 
145
145
  </div>
146
146
  </div>
@@ -158,7 +158,7 @@ template&lt;class To , class From &gt; </div>
158
158
  </table>
159
159
  </div><div class="memdoc">
160
160
 
161
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00286">286</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
161
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00293">293</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
162
162
 
163
163
  </div>
164
164
  </div>
@@ -82,7 +82,7 @@ Public Types</h2></td></tr>
82
82
  struct SVF::SVFUtil::cast_retty_wrap&lt; To, From, SimpleFrom &gt;</h3>
83
83
 
84
84
 
85
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00290">290</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
85
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00297">297</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
86
86
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
87
87
  <a id="af3d80ab43e47626f32c91a6c4454e82e"></a>
88
88
  <h2 class="memtitle"><span class="permalink"><a href="#af3d80ab43e47626f32c91a6c4454e82e">&#9670;&nbsp;</a></span>ret_type</h2>
@@ -98,7 +98,7 @@ template&lt;class To , class From , class SimpleFrom &gt; </div>
98
98
  </table>
99
99
  </div><div class="memdoc">
100
100
 
101
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00295">295</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
101
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00302">302</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
102
102
 
103
103
  </div>
104
104
  </div>
@@ -82,7 +82,7 @@ Public Types</h2></td></tr>
82
82
  struct SVF::SVFUtil::cast_retty_wrap&lt; To, FromTy, FromTy &gt;</h3>
83
83
 
84
84
 
85
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00299">299</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
85
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00306">306</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
86
86
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
87
87
  <a id="ad989c130f2b6cd5a0f1ba0c7abd62b9a"></a>
88
88
  <h2 class="memtitle"><span class="permalink"><a href="#ad989c130f2b6cd5a0f1ba0c7abd62b9a">&#9670;&nbsp;</a></span>ret_type</h2>
@@ -98,7 +98,7 @@ template&lt;class To , class FromTy &gt; </div>
98
98
  </table>
99
99
  </div><div class="memdoc">
100
100
 
101
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00302">302</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
101
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00309">309</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
102
102
 
103
103
  </div>
104
104
  </div>
@@ -82,7 +82,7 @@ Static Public Attributes</h2></td></tr>
82
82
  struct SVF::SVFUtil::is_simple_type&lt; X &gt;</h3>
83
83
 
84
84
 
85
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00337">337</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
85
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00344">344</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
86
86
  </div><h2 class="groupheader">Member Data Documentation</h2>
87
87
  <a id="a700d43a1b318fb30fa9472da323cb34f"></a>
88
88
  <h2 class="memtitle"><span class="permalink"><a href="#a700d43a1b318fb30fa9472da323cb34f">&#9670;&nbsp;</a></span>value</h2>
@@ -106,7 +106,7 @@ template&lt;class X &gt; </div>
106
106
  </table>
107
107
  </div><div class="memdoc">
108
108
  <b>Initial value:</b><div class="fragment"><div class="line">=</div><div class="line"> std::is_same&lt;X, typename simplify_type&lt;X&gt;::SimpleType&gt;<a class="code" href="structSVF_1_1SVFUtil_1_1is__simple__type.html#a700d43a1b318fb30fa9472da323cb34f">::value</a></div></div><!-- fragment -->
109
- <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00339">339</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
109
+ <p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#l00346">346</a> of file <a class="el" href="Casting_8h_source.html">Casting.h</a>.</p>
110
110
 
111
111
  </div>
112
112
  </div>
@@ -94,7 +94,7 @@ $(function() {
94
94
  <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="include_2MTA_2MTAResultValidator_8h_source.html#l00139">MTAResultValidator.h:139</a></div></div>
95
95
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_ac24a8a6922d9dc9edecab3bc45bc9204"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#ac24a8a6922d9dc9edecab3bc45bc9204">SVF::MTAResultValidator::getOutputforInterlevAnalysis</a></div><div class="ttdeci">std::string getOutputforInterlevAnalysis(const char *scenario, INTERLEV_FLAG analysisRes)</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00157">MTAResultValidator.cpp:157</a></div></div>
96
96
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_a373b5227fbfa82ac070f55db999afb28"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a373b5227fbfa82ac070f55db999afb28">SVF::MTAResultValidator::validateInterleaving</a></div><div class="ttdeci">INTERLEV_FLAG validateInterleaving()</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8cpp_source.html#l00496">MTAResultValidator.cpp:496</a></div></div>
97
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00398">Casting.h:398</a></div></div>
97
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00405">Casting.h:405</a></div></div>
98
98
  <div class="ttc" id="classSVF_1_1MTAResultValidator_html_a7d2043cf3c354812fa5e4cdf7f60ff20"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html#a7d2043cf3c354812fa5e4cdf7f60ff20">SVF::MTAResultValidator::rthdToChildrenMap</a></div><div class="ttdeci">Map&lt; NodeID, Set&lt; NodeID &gt; &gt; rthdToChildrenMap</div><div class="ttdef"><b>Definition:</b> <a href="tools_2MTA_2MTAResultValidator_8h_source.html#l00126">MTAResultValidator.h:126</a></div></div>
99
99
  <div class="ttc" id="classSVF_1_1RaceResultValidator_html_afdd89e26a7c168762bfe85746252827f"><div class="ttname"><a href="classSVF_1_1RaceResultValidator.html#afdd89e26a7c168762bfe85746252827f">SVF::RaceResultValidator::getOutput</a></div><div class="ttdeci">std::string getOutput(const char *scenario, bool analysisRes, bool expectedRes)</div><div class="ttdoc">Get the validation result string of a single validation scenario. </div><div class="ttdef"><b>Definition:</b> <a href="tools_2MTA_2MTAResultValidator_8h_source.html#l00374">MTAResultValidator.h:374</a></div></div>
100
100
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
@@ -177,10 +177,9 @@ protected:
177
177
  {
178
178
  handleAddr(pts,dpm,SVFUtil::cast<AddrSVFGNode>(node));
179
179
  }
180
- else if(SVFUtil::isa<CopySVFGNode>(node) || SVFUtil::isa<PHISVFGNode>(node)
181
- || SVFUtil::isa<ActualParmSVFGNode>(node) || SVFUtil::isa<FormalParmSVFGNode>(node)
182
- || SVFUtil::isa<ActualRetSVFGNode>(node) || SVFUtil::isa<FormalRetSVFGNode>(node)
183
- || SVFUtil::isa<NullPtrSVFGNode>(node))
180
+ else if (SVFUtil::isa<CopySVFGNode, PHISVFGNode, ActualParmSVFGNode,
181
+ FormalParmSVFGNode, ActualRetSVFGNode,
182
+ FormalRetSVFGNode, NullPtrSVFGNode>(node))
184
183
  {
185
184
  backtraceAlongDirectVF(pts,dpm);
186
185
  }
@@ -579,10 +578,7 @@ protected:
579
578
  /// Whether this is a top-level pointer statement
580
579
  inline bool isTopLevelPtrStmt(const SVFGNode* stmt)
581
580
  {
582
- if (SVFUtil::isa<StoreSVFGNode>(stmt) || SVFUtil::isa<MRSVFGNode>(stmt))
583
- return false;
584
- else
585
- return true;
581
+ return !SVFUtil::isa<StoreSVFGNode, MRSVFGNode>(stmt);
586
582
  }
587
583
  /// Return dpm with old context and path conditions
588
584
  virtual inline DPIm getDPImWithOldCond(const DPIm& oldDpm,const CVar& var, const SVFGNode* loc)
@@ -230,8 +230,8 @@ private:
230
230
  /// Return TRUE if both edges are indirect call/ret edges.
231
231
  inline bool bothInterEdges(const SVFGEdge* edge1, const SVFGEdge* edge2) const
232
232
  {
233
- bool inter1 = (SVFUtil::isa<CallIndSVFGEdge>(edge1) || SVFUtil::isa<RetIndSVFGEdge>(edge1));
234
- bool inter2 = (SVFUtil::isa<CallIndSVFGEdge>(edge2) || SVFUtil::isa<RetIndSVFGEdge>(edge2));
233
+ bool inter1 = SVFUtil::isa<CallIndSVFGEdge, RetIndSVFGEdge>(edge1);
234
+ bool inter2 = SVFUtil::isa<CallIndSVFGEdge, RetIndSVFGEdge>(edge2);
235
235
  return (inter1 && inter2);
236
236
  }
237
237
 
@@ -417,7 +417,7 @@ private:
417
417
  I = I->getPrevNode();
418
418
  while (I)
419
419
  {
420
- if (SVFUtil::isa<LoadInst>(I) || SVFUtil::isa<StoreInst>(I))
420
+ if (SVFUtil::isa<LoadInst, StoreInst>(I))
421
421
  return I;
422
422
 
423
423
  const SVFInstruction* inst = LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(I);
@@ -236,6 +236,7 @@ struct isa_impl_wrap<To, FromTy, FromTy>
236
236
  // template type argument. Used like this:
237
237
  //
238
238
  // if (SVFUtil::isa<Type>(myVal)) { ... }
239
+ // if (SVFUtil::isa<Type0, Type1, Type2>(myVal)) { ... }
239
240
  //
240
241
  template <class X, class Y> LLVM_NODISCARD inline bool isa(const Y &Val)
241
242
  {
@@ -243,6 +244,12 @@ template <class X, class Y> LLVM_NODISCARD inline bool isa(const Y &Val)
243
244
  typename simplify_type<const Y>::SimpleType>::doit(Val);
244
245
  }
245
246
 
247
+ template <typename First, typename Second, typename... Rest, typename Y>
248
+ LLVM_NODISCARD inline bool isa(const Y &Val)
249
+ {
250
+ return SVFUtil::isa<First>(Val) || SVFUtil::isa<Second, Rest...>(Val);
251
+ }
252
+
246
253
  //===----------------------------------------------------------------------===//
247
254
  // cast<x> Support Templates
248
255
  //===----------------------------------------------------------------------===//
@@ -79,7 +79,7 @@ void CFLStat::CFLSolverStat()
79
79
  */
80
80
  void CFLStat::performStat()
81
81
  {
82
- assert((SVFUtil::isa<CFLAlias>(pta)||SVFUtil::isa<CFLVF>(pta)) && "not an CFLAlias pass!! what else??");
82
+ assert((SVFUtil::isa<CFLAlias, CFLVF>(pta)) && "not an CFLAlias pass!! what else??");
83
83
  endClk();
84
84
 
85
85
  // Grammar stat
@@ -348,7 +348,7 @@ bool ContextDDA::isHeapCondMemObj(const CxtVar& var, const StoreSVFGNode*)
348
348
  }
349
349
  else
350
350
  {
351
- assert((SVFUtil::isa<DummyObjVar>(pnode) || SVFUtil::isa<DummyValVar>(pnode))
351
+ assert((SVFUtil::isa<DummyObjVar, DummyValVar>(pnode))
352
352
  && "empty refVal in non-dummy object");
353
353
  }
354
354
  return true;
@@ -480,7 +480,7 @@ bool ConstraintGraph::moveInEdgesToRepNode(ConstraintNode* node, ConstraintNode*
480
480
  }
481
481
  removeDirectEdge(edge);
482
482
  }
483
- else if(SVFUtil::isa<LoadCGEdge>(edge) || SVFUtil::isa<StoreCGEdge>(edge))
483
+ else if(SVFUtil::isa<LoadCGEdge, StoreCGEdge>(edge))
484
484
  reTargetDstOfEdge(edge,rep);
485
485
  else if(AddrCGEdge* addr = SVFUtil::dyn_cast<AddrCGEdge>(edge))
486
486
  {
@@ -539,7 +539,7 @@ bool ConstraintGraph::moveOutEdgesToRepNode(ConstraintNode*node, ConstraintNode*
539
539
  }
540
540
  removeDirectEdge(edge);
541
541
  }
542
- else if(SVFUtil::isa<LoadCGEdge>(edge) || SVFUtil::isa<StoreCGEdge>(edge))
542
+ else if(SVFUtil::isa<LoadCGEdge, StoreCGEdge>(edge))
543
543
  reTargetSrcOfEdge(edge,rep);
544
544
  else if(AddrCGEdge* addr = SVFUtil::dyn_cast<AddrCGEdge>(edge))
545
545
  {
@@ -94,10 +94,9 @@ void SVFGOPT::handleInterValueFlow()
94
94
  it!=eit; ++it)
95
95
  {
96
96
  SVFGNode* node = it->second;
97
- if (SVFUtil::isa<ActualParmSVFGNode>(node) || SVFUtil::isa<ActualRetSVFGNode>(node)
98
- || SVFUtil::isa<FormalParmSVFGNode>(node) || SVFUtil::isa<FormalRetSVFGNode>(node)
99
- || SVFUtil::isa<ActualINSVFGNode>(node) || SVFUtil::isa<ActualOUTSVFGNode>(node)
100
- || SVFUtil::isa<FormalINSVFGNode>(node) || SVFUtil::isa<FormalOUTSVFGNode>(node))
97
+ if (SVFUtil::isa<ActualParmSVFGNode, ActualRetSVFGNode, FormalParmSVFGNode,
98
+ FormalRetSVFGNode, ActualINSVFGNode, ActualOUTSVFGNode,
99
+ FormalINSVFGNode, FormalOUTSVFGNode>(node))
101
100
  candidates.insert(node);
102
101
  }
103
102
 
@@ -116,16 +115,16 @@ void SVFGOPT::handleInterValueFlow()
116
115
  replaceFParamARetWithPHI(addInterPHIForAR(ar), ar);
117
116
  nodesToBeDeleted.insert(ar);
118
117
  }
119
- else if (SVFUtil::isa<ActualParmSVFGNode>(node) || SVFUtil::isa<FormalRetSVFGNode>(node))
118
+ else if (SVFUtil::isa<ActualParmSVFGNode, FormalRetSVFGNode>(node))
120
119
  {
121
120
  nodesToBeDeleted.insert(node);
122
121
  }
123
- else if (SVFUtil::isa<ActualINSVFGNode>(node) || SVFUtil::isa<FormalOUTSVFGNode>(node))
122
+ else if (SVFUtil::isa<ActualINSVFGNode, FormalOUTSVFGNode>(node))
124
123
  {
125
124
  retargetEdgesOfAInFOut(node);
126
125
  nodesToBeDeleted.insert(node);
127
126
  }
128
- else if (SVFUtil::isa<ActualOUTSVFGNode>(node) || SVFUtil::isa<FormalINSVFGNode>(node))
127
+ else if (SVFUtil::isa<ActualOUTSVFGNode, FormalINSVFGNode>(node))
129
128
  {
130
129
  if(keepActualOutFormalIn == false)
131
130
  nodesToBeDeleted.insert(node);
@@ -137,7 +136,7 @@ void SVFGOPT::handleInterValueFlow()
137
136
  SVFGNode* node = *it;
138
137
  if (canBeRemoved(node))
139
138
  {
140
- if (SVFUtil::isa<ActualOUTSVFGNode>(node) || SVFUtil::isa<FormalINSVFGNode>(node))
139
+ if (SVFUtil::isa<ActualOUTSVFGNode, FormalINSVFGNode>(node))
141
140
  retargetEdgesOfAOutFIn(node); /// reset def of address-taken variable
142
141
 
143
142
  removeAllEdges(node);
@@ -151,7 +150,7 @@ void SVFGOPT::handleInterValueFlow()
151
150
  */
152
151
  void SVFGOPT::replaceFParamARetWithPHI(PHISVFGNode* phi, SVFGNode* svfgNode)
153
152
  {
154
- assert((SVFUtil::isa<FormalParmSVFGNode>(svfgNode) || SVFUtil::isa<ActualRetSVFGNode>(svfgNode))
153
+ assert((SVFUtil::isa<FormalParmSVFGNode, ActualRetSVFGNode>(svfgNode))
155
154
  && "expecting a formal param or actual ret svfg node");
156
155
 
157
156
  /// create a new PHISVFGNode.
@@ -299,7 +298,7 @@ bool SVFGOPT::isConnectingTwoCallSites(const SVFGNode* node) const
299
298
  SVFGNode::const_iterator edgeEit = node->InEdgeEnd();
300
299
  for (; edgeIt != edgeEit; ++edgeIt)
301
300
  {
302
- if (SVFUtil::isa<CallIndSVFGEdge>(*edgeIt) || SVFUtil::isa<RetIndSVFGEdge>(*edgeIt))
301
+ if (SVFUtil::isa<CallIndSVFGEdge, RetIndSVFGEdge>(*edgeIt))
303
302
  {
304
303
  hasInCallRet = true;
305
304
  break;
@@ -310,7 +309,7 @@ bool SVFGOPT::isConnectingTwoCallSites(const SVFGNode* node) const
310
309
  edgeEit = node->OutEdgeEnd();
311
310
  for (; edgeIt != edgeEit; ++edgeIt)
312
311
  {
313
- if (SVFUtil::isa<CallIndSVFGEdge>(*edgeIt) || SVFUtil::isa<RetIndSVFGEdge>(*edgeIt))
312
+ if (SVFUtil::isa<CallIndSVFGEdge, RetIndSVFGEdge>(*edgeIt))
314
313
  {
315
314
  hasOutCallRet = true;
316
315
  break;
@@ -334,12 +333,11 @@ bool SVFGOPT::isConnectingTwoCallSites(const SVFGNode* node) const
334
333
  /// 5. FormalOUT if it doesn't reside at the exit of address-taken function
335
334
  bool SVFGOPT::canBeRemoved(const SVFGNode * node)
336
335
  {
337
- if (SVFUtil::isa<ActualParmSVFGNode>(node) || SVFUtil::isa<FormalParmSVFGNode>(node)
338
- || SVFUtil::isa<ActualRetSVFGNode>(node) || SVFUtil::isa<FormalRetSVFGNode>(node))
336
+ if (SVFUtil::isa<ActualParmSVFGNode, FormalParmSVFGNode,
337
+ ActualRetSVFGNode, FormalRetSVFGNode>(node))
339
338
  return true;
340
- else if (SVFUtil::isa<ActualINSVFGNode>(node) || SVFUtil::isa<ActualOUTSVFGNode>(node)
341
- || SVFUtil::isa<FormalINSVFGNode>(node) || SVFUtil::isa<FormalOUTSVFGNode>(node)
342
- || SVFUtil::isa<MSSAPHISVFGNode>(node))
339
+ else if (SVFUtil::isa<ActualINSVFGNode, ActualOUTSVFGNode, FormalINSVFGNode,
340
+ FormalOUTSVFGNode, MSSAPHISVFGNode>(node))
343
341
  {
344
342
  /// Now each SVFG edge can only be associated with one call site id,
345
343
  /// so if this node has both incoming call/ret and outgoting call/ret
@@ -460,7 +458,7 @@ bool SVFGOPT::checkSelfCycleEdges(const MSSAPHISVFGNode* node)
460
458
  break; /// There's no need to check other edge if we do not remove self cycle
461
459
  }
462
460
  else if (keepContextSelfCycle &&
463
- (SVFUtil::isa<CallIndSVFGEdge>(preEdge) || SVFUtil::isa<RetIndSVFGEdge>(preEdge)))
461
+ SVFUtil::isa<CallIndSVFGEdge, RetIndSVFGEdge>(preEdge))
464
462
  {
465
463
  hasSelfCycle = true;
466
464
  continue; /// Continue checking and remove other self cycle which are NOT context-related
@@ -270,7 +270,8 @@ bool MTASVFGBuilder::isTailofSpan(const StmtSVFGNode* n, InstSet mergespan)
270
270
 
271
271
  for (SVFGNodeIDSet::iterator it = succ.begin(), eit = succ.end(); it != eit; ++it)
272
272
  {
273
- assert ((SVFUtil::isa<StoreSVFGNode>(svfg->getSVFGNode(*it)) || SVFUtil::isa<LoadSVFGNode>(svfg->getSVFGNode(*it))) && "succ is not a store/load node");
273
+ assert((SVFUtil::isa<StoreSVFGNode, LoadSVFGNode>(svfg->getSVFGNode(*it))) &&
274
+ "succ is not a store/load node");
274
275
  const StmtSVFGNode* succNode = SVFUtil::dyn_cast<StmtSVFGNode>(svfg->getSVFGNode(*it));
275
276
  const SVFInstruction* succIns = succNode->getInst();
276
277
 
@@ -292,7 +293,8 @@ bool MTASVFGBuilder::isTailofSpan(const StmtSVFGNode* n, LockAnalysis::LockSpan
292
293
  SVFGNodeIDSet succ = getSuccNodes(n);
293
294
  for (SVFGNodeIDSet::iterator it = succ.begin(), eit = succ.end(); it != eit; ++it)
294
295
  {
295
- assert ((SVFUtil::isa<StoreSVFGNode>(svfg->getSVFGNode(*it)) || SVFUtil::isa<LoadSVFGNode>(svfg->getSVFGNode(*it))) && "succ is not a store/load node");
296
+ assert((SVFUtil::isa<StoreSVFGNode, LoadSVFGNode>(svfg->getSVFGNode(*it))) &&
297
+ "succ is not a store/load node");
296
298
  if (SVFUtil::isa<LoadSVFGNode>(svfg->getSVFGNode(*it)))
297
299
  continue;
298
300
  const StmtSVFGNode* succNode = SVFUtil::dyn_cast<StmtSVFGNode>(svfg->getSVFGNode(*it));
@@ -322,8 +324,7 @@ bool MTASVFGBuilder::isTailofSpan(const StmtSVFGNode* n)
322
324
 
323
325
  for (SVFGNodeIDSet::iterator it = succ.begin(), eit = succ.end(); it != eit; ++it)
324
326
  {
325
- assert((SVFUtil::isa<StoreSVFGNode>(svfg->getSVFGNode(*it)) || SVFUtil::isa<LoadSVFGNode>(svfg->getSVFGNode(*it)))
326
- && "succ is not a store/load node");
327
+ assert((SVFUtil::isa<StoreSVFGNode, LoadSVFGNode>(svfg->getSVFGNode(*it))) && "succ is not a store/load node");
327
328
  if (SVFUtil::isa<LoadSVFGNode>(svfg->getSVFGNode(*it)))
328
329
  continue;
329
330
 
@@ -401,7 +402,7 @@ MTASVFGBuilder::SVFGNodeIDSet MTASVFGBuilder::getSuccNodes(const StmtSVFGNode* n
401
402
  const SVFGNode* node = *worklist.begin();
402
403
  worklist.erase(worklist.begin());
403
404
  visited.insert(node);
404
- if (SVFUtil::isa<StoreSVFGNode>(node) || SVFUtil::isa<LoadSVFGNode>(node))
405
+ if (SVFUtil::isa<StoreSVFGNode, LoadSVFGNode>(node))
405
406
  succ.set(node->getId());
406
407
  else
407
408
  {
@@ -440,7 +441,7 @@ MTASVFGBuilder::SVFGNodeIDSet MTASVFGBuilder::getSuccNodes(const StmtSVFGNode* n
440
441
  const SVFGNode* node = *worklist.begin();
441
442
  worklist.erase(worklist.begin());
442
443
  visited.insert(node);
443
- if (SVFUtil::isa<StoreSVFGNode>(node) || SVFUtil::isa<LoadSVFGNode>(node))
444
+ if (SVFUtil::isa<StoreSVFGNode, LoadSVFGNode>(node))
444
445
  succ.set(node->getId());
445
446
  else
446
447
  {
@@ -456,7 +456,7 @@ void LockAnalysis::handleRet(const CxtStmt& cts)
456
456
  for (PTACallGraphNode::const_iterator it = curFunNode->getInEdges().begin(), eit = curFunNode->getInEdges().end(); it != eit; ++it)
457
457
  {
458
458
  PTACallGraphEdge* edge = *it;
459
- if (SVFUtil::isa<ThreadForkEdge>(edge) || SVFUtil::isa<ThreadJoinEdge>(edge))
459
+ if (SVFUtil::isa<ThreadForkEdge, ThreadJoinEdge>(edge))
460
460
  continue;
461
461
  for (PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)->directCallsBegin(), ecit = (edge)->directCallsEnd(); cit != ecit;
462
462
  ++cit)