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.
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Casting_8h.html +3 -0
- package/SVF-doxygen/html/html/Casting_8h_source.html +22 -22
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +82 -74
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +9 -9
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +27 -21
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +18 -18
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +33 -38
- package/SVF-doxygen/html/html/MHP_8h_source.html +22 -22
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +12 -11
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +11 -11
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFValue_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +8 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +8 -8
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +228 -220
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +64 -58
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +30 -38
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +67 -83
- package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +53 -53
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +46 -33
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +8 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
- package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +7 -7
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +50 -17
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +2 -2
- package/SVF-doxygen/html/html/namespacemembers_func_i.html +7 -7
- package/SVF-doxygen/html/html/namespacemembers_i.html +8 -8
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/functions_8.js +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__convert__val_3_01To_00_01FromTy_00_01FromTy_01_4.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01From_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__impl_3_01To_00_01const_01From_01_5const_01_4.html +2 -2
- 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
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1cast__retty__wrap_3_01To_00_01FromTy_00_01FromTy_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__simple__type.html +2 -2
- package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/include/DDA/DDAVFSolver.h +4 -8
- package/include/Graphs/SVFGOPT.h +2 -2
- package/include/MTA/MTAResultValidator.h +1 -1
- package/include/Util/Casting.h +7 -0
- package/lib/CFL/CFLStat.cpp +1 -1
- package/lib/DDA/ContextDDA.cpp +1 -1
- package/lib/Graphs/ConsG.cpp +2 -2
- package/lib/Graphs/SVFGOPT.cpp +15 -17
- package/lib/MTA/FSMPTA.cpp +7 -6
- package/lib/MTA/LockAnalysis.cpp +1 -1
- package/lib/MTA/MHP.cpp +215 -227
- package/lib/MemoryModel/LocationSet.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
- package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
- package/lib/SABER/SrcSnkDDA.cpp +3 -3
- package/lib/SVF-LLVM/LLVMModule.cpp +1 -1
- package/lib/SVF-LLVM/LLVMUtil.cpp +1 -1
- package/lib/SVF-LLVM/SVFIRBuilder.cpp +4 -4
- package/lib/SVF-LLVM/SymbolTableBuilder.cpp +3 -2
- package/lib/SVFIR/SymbolTableInfo.cpp +1 -1
- package/lib/WPA/AndersenSFR.cpp +1 -1
- package/lib/WPA/FlowSensitive.cpp +23 -22
- package/package.json +1 -1
|
@@ -82,7 +82,7 @@ Static Public Member Functions</h2></td></tr>
|
|
|
82
82
|
struct SVF::SVFUtil::cast_convert_val< To, FromTy, FromTy ></h3>
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
<p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#
|
|
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">◆ </a></span>doit()</h2>
|
|
@@ -110,8 +110,8 @@ template<class To , class FromTy > </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#
|
|
114
|
-
<div class="fragment"><div class="line"><a name="
|
|
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>  {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty<To, FromTy>::ret_type</a> Res2</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  = (<span class="keyword">typename</span> <a class="code" href="structSVF_1_1SVFUtil_1_1cast__retty.html#aea91708cabb8176b031f1c1fdb89a15b">cast_retty<To, FromTy>::ret_type</a>)const_cast<FromTy&>(Val);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">return</span> Res2;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  }</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< To, From, typename simplify_type< From >::SimpleType >::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< To, From ></h3>
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
<p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#
|
|
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">◆ </a></span>ret_type</h2>
|
|
@@ -98,7 +98,7 @@ template<class To, class From> </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#
|
|
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< To, From ></h3>
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
<p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#
|
|
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">◆ </a></span>ret_type</h2>
|
|
@@ -98,7 +98,7 @@ template<class To, class From> </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#
|
|
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< To, From * ></h3>
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
<p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#
|
|
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">◆ </a></span>ret_type</h2>
|
|
@@ -98,7 +98,7 @@ template<class To , class From > </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#
|
|
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< To, const From ></h3>
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
<p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#
|
|
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">◆ </a></span>ret_type</h2>
|
|
@@ -98,7 +98,7 @@ template<class To , class From > </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#
|
|
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< To, const From * ></h3>
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
<p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#
|
|
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">◆ </a></span>ret_type</h2>
|
|
@@ -98,7 +98,7 @@ template<class To , class From > </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#
|
|
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< To, const From *const ></h3>
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
<p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#
|
|
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">◆ </a></span>ret_type</h2>
|
|
@@ -98,7 +98,7 @@ template<class To , class From > </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#
|
|
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< To, std::unique_ptr< From > ></h3>
|
|
91
91
|
|
|
92
92
|
|
|
93
|
-
<p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#
|
|
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">◆ </a></span>PointerType</h2>
|
|
@@ -114,7 +114,7 @@ template<class To , class From > </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#
|
|
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<class To , class From > </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#
|
|
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<class To , class From > </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#
|
|
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< To, From, SimpleFrom ></h3>
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
<p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#
|
|
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">◆ </a></span>ret_type</h2>
|
|
@@ -98,7 +98,7 @@ template<class To , class From , class SimpleFrom > </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#
|
|
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< To, FromTy, FromTy ></h3>
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
<p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#
|
|
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">◆ </a></span>ret_type</h2>
|
|
@@ -98,7 +98,7 @@ template<class To , class FromTy > </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#
|
|
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< X ></h3>
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
<p class="definition">Definition at line <a class="el" href="Casting_8h_source.html#
|
|
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">◆ </a></span>value</h2>
|
|
@@ -106,7 +106,7 @@ template<class X > </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<X, typename simplify_type<X>::SimpleType><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#
|
|
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<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type > dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#
|
|
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<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type > dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00405">Casting.h:405</a></div></div>
|
|
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< NodeID, Set< NodeID > > 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
|
|
181
|
-
|
|
182
|
-
|
|
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
|
-
|
|
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)
|
package/include/Graphs/SVFGOPT.h
CHANGED
|
@@ -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 =
|
|
234
|
-
bool inter2 =
|
|
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
|
|
420
|
+
if (SVFUtil::isa<LoadInst, StoreInst>(I))
|
|
421
421
|
return I;
|
|
422
422
|
|
|
423
423
|
const SVFInstruction* inst = LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(I);
|
package/include/Util/Casting.h
CHANGED
|
@@ -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
|
//===----------------------------------------------------------------------===//
|
package/lib/CFL/CFLStat.cpp
CHANGED
|
@@ -79,7 +79,7 @@ void CFLStat::CFLSolverStat()
|
|
|
79
79
|
*/
|
|
80
80
|
void CFLStat::performStat()
|
|
81
81
|
{
|
|
82
|
-
assert((SVFUtil::isa<CFLAlias
|
|
82
|
+
assert((SVFUtil::isa<CFLAlias, CFLVF>(pta)) && "not an CFLAlias pass!! what else??");
|
|
83
83
|
endClk();
|
|
84
84
|
|
|
85
85
|
// Grammar stat
|
package/lib/DDA/ContextDDA.cpp
CHANGED
|
@@ -348,7 +348,7 @@ bool ContextDDA::isHeapCondMemObj(const CxtVar& var, const StoreSVFGNode*)
|
|
|
348
348
|
}
|
|
349
349
|
else
|
|
350
350
|
{
|
|
351
|
-
assert((SVFUtil::isa<DummyObjVar
|
|
351
|
+
assert((SVFUtil::isa<DummyObjVar, DummyValVar>(pnode))
|
|
352
352
|
&& "empty refVal in non-dummy object");
|
|
353
353
|
}
|
|
354
354
|
return true;
|
package/lib/Graphs/ConsG.cpp
CHANGED
|
@@ -480,7 +480,7 @@ bool ConstraintGraph::moveInEdgesToRepNode(ConstraintNode* node, ConstraintNode*
|
|
|
480
480
|
}
|
|
481
481
|
removeDirectEdge(edge);
|
|
482
482
|
}
|
|
483
|
-
else if(SVFUtil::isa<LoadCGEdge
|
|
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
|
|
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
|
{
|
package/lib/Graphs/SVFGOPT.cpp
CHANGED
|
@@ -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
|
|
98
|
-
|
|
99
|
-
|
|
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
|
|
118
|
+
else if (SVFUtil::isa<ActualParmSVFGNode, FormalRetSVFGNode>(node))
|
|
120
119
|
{
|
|
121
120
|
nodesToBeDeleted.insert(node);
|
|
122
121
|
}
|
|
123
|
-
else if (SVFUtil::isa<ActualINSVFGNode
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
338
|
-
|
|
336
|
+
if (SVFUtil::isa<ActualParmSVFGNode, FormalParmSVFGNode,
|
|
337
|
+
ActualRetSVFGNode, FormalRetSVFGNode>(node))
|
|
339
338
|
return true;
|
|
340
|
-
else if (SVFUtil::isa<ActualINSVFGNode
|
|
341
|
-
|
|
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
|
-
|
|
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
|
package/lib/MTA/FSMPTA.cpp
CHANGED
|
@@ -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
|
|
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
|
|
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))
|
|
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
|
|
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
|
|
444
|
+
if (SVFUtil::isa<StoreSVFGNode, LoadSVFGNode>(node))
|
|
444
445
|
succ.set(node->getId());
|
|
445
446
|
else
|
|
446
447
|
{
|
package/lib/MTA/LockAnalysis.cpp
CHANGED
|
@@ -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
|
|
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)
|