svf-tools 1.0.292 → 1.0.296
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/CMakeLists.txt +1 -1
- package/Dockerfile +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/BasicTypes_8h_source.html +2 -2
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +2 -44
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +3 -5
- package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/GraphPrinter_8h.html +1 -0
- package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +1 -1
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
- 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/ProgSlice_8cpp_source.html +4 -12
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +33 -35
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +32 -37
- package/SVF-doxygen/html/html/SVFG_8h_source.html +19 -19
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +17 -11
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +2 -3
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -3
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -3
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice-members.html +36 -37
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +121 -153
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +50 -50
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +8 -9
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +1 -1
- package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +7 -7
- package/SVF-doxygen/html/html/functions_f.html +3 -3
- package/SVF-doxygen/html/html/functions_func_g.html +9 -12
- package/SVF-doxygen/html/html/functions_func_p.html +1 -1
- package/SVF-doxygen/html/html/functions_g.html +10 -13
- package/SVF-doxygen/html/html/functions_n.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +11 -11
- package/SVF-doxygen/html/html/functions_p.html +9 -5
- package/SVF-doxygen/html/html/functions_r.html +3 -5
- package/SVF-doxygen/html/html/functions_s.html +6 -6
- package/SVF-doxygen/html/html/functions_t.html +6 -6
- package/SVF-doxygen/html/html/functions_u.html +3 -3
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_w.html +8 -6
- package/SVF-doxygen/html/html/globals_c.html +100 -103
- package/SVF-doxygen/html/html/globals_func_c.html +88 -91
- package/SVF-doxygen/html/html/search/all_10.js +6 -6
- package/SVF-doxygen/html/html/search/all_12.js +1 -1
- package/SVF-doxygen/html/html/search/all_13.js +2 -2
- package/SVF-doxygen/html/html/search/all_14.js +6 -6
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +0 -1
- package/SVF-doxygen/html/html/search/all_6.js +1 -1
- package/SVF-doxygen/html/html/search/all_7.js +1 -2
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +4 -4
- package/SVF-doxygen/html/html/search/all_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_2.js +0 -1
- package/SVF-doxygen/html/html/search/functions_6.js +1 -2
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +3 -3
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +20 -20
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +18 -18
- package/build.sh +6 -3
- package/include/Graphs/GraphPrinter.h +2 -1
- package/include/MemoryModel/MutablePointsToDS.h +1 -1
- package/include/MemoryModel/PointerAnalysisImpl.h +4 -4
- package/include/SABER/ProgSlice.h +0 -3
- package/include/Util/BasicTypes.h +1 -1
- package/lib/DDA/DDAPass.cpp +1 -1
- package/lib/Graphs/SVFG.cpp +0 -20
- package/lib/Graphs/VFG.cpp +18 -0
- package/lib/MemoryModel/PointerAnalysis.cpp +7 -7
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +3 -3
- package/lib/SABER/ProgSlice.cpp +0 -37
- package/lib/SABER/SaberAnnotator.cpp +1 -1
- package/lib/SVF-FE/BreakConstantExpr.cpp +5 -143
- package/lib/SVF-FE/Graph2Json.cpp +1 -1
- package/lib/SVF-FE/LLVMModule.cpp +1 -1
- package/lib/Util/TypeBasedHeapCloning.cpp +6 -6
- package/lib/WPA/Andersen.cpp +4 -4
- package/lib/WPA/FlowSensitive.cpp +2 -2
- package/lib/WPA/FlowSensitiveTBHC.cpp +2 -2
- package/lib/WPA/WPAPass.cpp +7 -7
- package/package.json +1 -1
- package/setup.sh +1 -1
|
@@ -117,7 +117,7 @@ Static Public Member Functions</h2></td></tr>
|
|
|
117
117
|
struct llvm::DOTGraphTraits< VFG * ></h3>
|
|
118
118
|
|
|
119
119
|
|
|
120
|
-
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#
|
|
120
|
+
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l00920">920</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
|
|
121
121
|
</div><h2 class="groupheader">Member Typedef Documentation</h2>
|
|
122
122
|
<a id="afd7d2c80916a68b53814e6de593bf520"></a>
|
|
123
123
|
<h2 class="memtitle"><span class="permalink"><a href="#afd7d2c80916a68b53814e6de593bf520">◆ </a></span>NodeType</h2>
|
|
@@ -131,7 +131,7 @@ struct llvm::DOTGraphTraits< VFG * ></h3>
|
|
|
131
131
|
</table>
|
|
132
132
|
</div><div class="memdoc">
|
|
133
133
|
|
|
134
|
-
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#
|
|
134
|
+
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l00923">923</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
|
|
135
135
|
|
|
136
136
|
</div>
|
|
137
137
|
</div>
|
|
@@ -160,8 +160,8 @@ struct llvm::DOTGraphTraits< VFG * ></h3>
|
|
|
160
160
|
</table>
|
|
161
161
|
</div><div class="memdoc">
|
|
162
162
|
|
|
163
|
-
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#
|
|
164
|
-
<div class="fragment"><div class="line"><a name="
|
|
163
|
+
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l00924">924</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
|
|
164
|
+
<div class="fragment"><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  :</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  DOTGraphTraits<PAG*>(isSimple)</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  {</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  }</div></div><!-- fragment -->
|
|
165
165
|
</div>
|
|
166
166
|
</div>
|
|
167
167
|
<h2 class="groupheader">Member Function Documentation</h2>
|
|
@@ -201,8 +201,8 @@ struct llvm::DOTGraphTraits< VFG * ></h3>
|
|
|
201
201
|
|
|
202
202
|
<p>Return label of a VFG node with MemSSA information. </p>
|
|
203
203
|
|
|
204
|
-
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#
|
|
205
|
-
<div class="fragment"><div class="line"><a name="
|
|
204
|
+
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l00995">995</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
|
|
205
|
+
<div class="fragment"><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  {</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> </div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  std::string str;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* stmtNode = SVFUtil::dyn_cast<StmtVFGNode>(node))</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  {</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  rawstr << stmtNode->toString();</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  }</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* bop = SVFUtil::dyn_cast<BinaryOPVFGNode>(node))</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  {</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  rawstr << bop->toString();</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  }</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* uop = SVFUtil::dyn_cast<UnaryOPVFGNode>(node))</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  {</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  rawstr << uop->toString();</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  }</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* cmp = SVFUtil::dyn_cast<CmpVFGNode>(node))</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  {</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  rawstr << cmp->toString();</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  }</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHIVFGNode</a>* phi = SVFUtil::dyn_cast<PHIVFGNode>(node))</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  {</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  rawstr << phi->toString();</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  }</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* fp = SVFUtil::dyn_cast<FormalParmVFGNode>(node))</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  {</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  rawstr << fp->toString();</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  }</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* ap = SVFUtil::dyn_cast<ActualParmVFGNode>(node))</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  {</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  rawstr << ap->toString();</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  }</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NullPtrVFGNode.html">NullPtrVFGNode</a>* nptr = SVFUtil::dyn_cast<NullPtrVFGNode>(node))</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  {</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  rawstr << nptr->toString();</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  }</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* ar = SVFUtil::dyn_cast<ActualRetVFGNode>(node))</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  {</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  rawstr << ar->toString();</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  }</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* fr = SVFUtil::dyn_cast<FormalRetVFGNode>(node))</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  {</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  rawstr << fr->toString();</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  }</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MRSVFGNode.html">MRSVFGNode</a>* mr = SVFUtil::dyn_cast<MRSVFGNode>(node))</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  {</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  rawstr << mr->toString();</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  }</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"what else kinds of nodes do we have??"</span>);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> </div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  }</div><div class="ttc" id="classSVF_1_1BinaryOPVFGNode_html"><div class="ttname"><a href="classSVF_1_1BinaryOPVFGNode.html">SVF::BinaryOPVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00388">VFGNode.h:388</a></div></div>
|
|
206
206
|
<div class="ttc" id="classSVF_1_1ActualParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualParmVFGNode.html">SVF::ActualParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00779">VFGNode.h:779</a></div></div>
|
|
207
207
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
208
208
|
<div class="ttc" id="classSVF_1_1PHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html">SVF::PHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00572">VFGNode.h:572</a></div></div>
|
|
@@ -260,8 +260,8 @@ template<class EdgeIter > </div>
|
|
|
260
260
|
</table>
|
|
261
261
|
</div><div class="memdoc">
|
|
262
262
|
|
|
263
|
-
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#
|
|
264
|
-
<div class="fragment"><div class="line"><a name="
|
|
263
|
+
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l01137">1137</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
|
|
264
|
+
<div class="fragment"><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  {</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge && <span class="stringliteral">"No edge found!!"</span>);</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <span class="keywordflow">if</span> (SVFUtil::isa<DirectSVFGEdge>(edge))</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  {</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  <span class="keywordflow">if</span> (SVFUtil::isa<CallDirSVFGEdge>(edge))</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <span class="keywordflow">return</span> <span class="stringliteral">"style=solid,color=red"</span>;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<RetDirSVFGEdge>(edge))</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  <span class="keywordflow">return</span> <span class="stringliteral">"style=solid,color=blue"</span>;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  <span class="keywordflow">return</span> <span class="stringliteral">"style=solid"</span>;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  }</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<IndirectSVFGEdge>(edge))</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  {</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <span class="keywordflow">if</span> (SVFUtil::isa<CallIndSVFGEdge>(edge))</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  <span class="keywordflow">return</span> <span class="stringliteral">"style=dashed,color=red"</span>;</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<RetIndSVFGEdge>(edge))</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  <span class="keywordflow">return</span> <span class="stringliteral">"style=dashed,color=blue"</span>;</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <span class="keywordflow">return</span> <span class="stringliteral">"style=dashed"</span>;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  }</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  {</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"what else edge we have?"</span>);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  }</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
265
265
|
<div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
|
|
266
266
|
</div><!-- fragment -->
|
|
267
267
|
</div>
|
|
@@ -302,8 +302,8 @@ template<class EdgeIter > </div>
|
|
|
302
302
|
</table>
|
|
303
303
|
</div><div class="memdoc">
|
|
304
304
|
|
|
305
|
-
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#
|
|
306
|
-
<div class="fragment"><div class="line"><a name="
|
|
305
|
+
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l01167">1167</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
|
|
306
|
+
<div class="fragment"><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  {</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge && <span class="stringliteral">"No edge found!!"</span>);</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> </div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  std::string str;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CallDirSVFGEdge.html">CallDirSVFGEdge</a>* dirCall = SVFUtil::dyn_cast<CallDirSVFGEdge>(edge))</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  rawstr << dirCall->getCallSiteId();</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1RetDirSVFGEdge.html">RetDirSVFGEdge</a>* dirRet = SVFUtil::dyn_cast<RetDirSVFGEdge>(edge))</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  rawstr << dirRet->getCallSiteId();</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> </div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
307
307
|
<div class="ttc" id="classSVF_1_1CallDirSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallDirSVFGEdge.html">SVF::CallDirSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00211">VFGEdge.h:211</a></div></div>
|
|
308
308
|
<div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
|
|
309
309
|
<div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
|
|
@@ -337,8 +337,8 @@ template<class EdgeIter > </div>
|
|
|
337
337
|
|
|
338
338
|
<p>Return name of the graph. </p>
|
|
339
339
|
|
|
340
|
-
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#
|
|
341
|
-
<div class="fragment"><div class="line"><a name="
|
|
340
|
+
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l00930">930</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
|
|
341
|
+
<div class="fragment"><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  {</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">return</span> <span class="stringliteral">"VFG"</span>;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  }</div></div><!-- fragment -->
|
|
342
342
|
</div>
|
|
343
343
|
</div>
|
|
344
344
|
<a id="a57d4a186a0319b73d69752564bf25b2a"></a>
|
|
@@ -375,8 +375,8 @@ template<class EdgeIter > </div>
|
|
|
375
375
|
</table>
|
|
376
376
|
</div><div class="memdoc">
|
|
377
377
|
|
|
378
|
-
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#
|
|
379
|
-
<div class="fragment"><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  {</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  std::string str;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> </div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* stmtNode = SVFUtil::dyn_cast<StmtVFGNode>(node))</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  {</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = stmtNode->getPAGEdge();</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="keywordflow">if</span> (SVFUtil::isa<AddrPE>(edge))</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  {</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  rawstr << <span class="stringliteral">"color=green"</span>;</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  }</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<CopyPE>(edge))</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  {</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  rawstr << <span class="stringliteral">"color=black"</span>;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  }</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<RetPE>(edge))</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  {</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  rawstr << <span class="stringliteral">"color=black,style=dotted"</span>;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  }</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<GepPE>(edge))</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  {</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  rawstr << <span class="stringliteral">"color=purple"</span>;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  }</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<StorePE>(edge))</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  {</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  rawstr << <span class="stringliteral">"color=blue"</span>;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  }</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<LoadPE>(edge))</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  {</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  rawstr << <span class="stringliteral">"color=red"</span>;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  }</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  {</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 && <span class="stringliteral">"No such kind edge!!"</span>);</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  }</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  rawstr << <span class="stringliteral">""</span>;</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  }</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<CmpVFGNode>(node))</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  {</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  }</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<BinaryOPVFGNode>(node))</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  {</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  }</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<UnaryOPVFGNode>(node))</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  {</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  }</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<PHIVFGNode>(node))</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  {</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  rawstr << <span class="stringliteral">"color=black"</span>;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  }</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<NullPtrVFGNode>(node))</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  {</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  }</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<FormalParmVFGNode>(node))</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  {</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  }</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<ActualParmVFGNode>(node))</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  {</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  }</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ActualRetVFGNode>(node))</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  {</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  }</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<FormalRetVFGNode>(node))</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  {</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  }</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<MRSVFGNode>(node))</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  {</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  rawstr << <span class="stringliteral">"color=orange,penwidth=2"</span>;</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  }</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"no such kind of node!!"</span>);</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> </div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  rawstr << <span class="stringliteral">""</span>;</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> </div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  }</div><div class="ttc" id="classSVF_1_1PAGEdge_html"><div class="ttname"><a href="classSVF_1_1PAGEdge.html">SVF::PAGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00047">PAGEdge.h:47</a></div></div>
|
|
378
|
+
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l01050">1050</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
|
|
379
|
+
<div class="fragment"><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  {</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  std::string str;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> </div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* stmtNode = SVFUtil::dyn_cast<StmtVFGNode>(node))</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  {</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = stmtNode->getPAGEdge();</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  <span class="keywordflow">if</span> (SVFUtil::isa<AddrPE>(edge))</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  {</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  rawstr << <span class="stringliteral">"color=green"</span>;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  }</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<CopyPE>(edge))</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  {</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  rawstr << <span class="stringliteral">"color=black"</span>;</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  }</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<RetPE>(edge))</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  {</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  rawstr << <span class="stringliteral">"color=black,style=dotted"</span>;</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  }</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<GepPE>(edge))</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  {</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  rawstr << <span class="stringliteral">"color=purple"</span>;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  }</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<StorePE>(edge))</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  {</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  rawstr << <span class="stringliteral">"color=blue"</span>;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  }</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<LoadPE>(edge))</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  {</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  rawstr << <span class="stringliteral">"color=red"</span>;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  }</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  {</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 && <span class="stringliteral">"No such kind edge!!"</span>);</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  }</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  rawstr << <span class="stringliteral">""</span>;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  }</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<CmpVFGNode>(node))</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  {</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  }</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<BinaryOPVFGNode>(node))</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  }</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<UnaryOPVFGNode>(node))</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  {</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  }</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<PHIVFGNode>(node))</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  rawstr << <span class="stringliteral">"color=black"</span>;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  }</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<NullPtrVFGNode>(node))</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  {</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  rawstr << <span class="stringliteral">"color=grey"</span>;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  }</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<FormalParmVFGNode>(node))</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  {</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  }</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<ActualParmVFGNode>(node))</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  {</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  }</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ActualRetVFGNode>(node))</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  {</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  }</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<FormalRetVFGNode>(node))</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  {</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  rawstr << <span class="stringliteral">"color=yellow,penwidth=2"</span>;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  }</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<MRSVFGNode>(node))</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  {</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  rawstr << <span class="stringliteral">"color=orange,penwidth=2"</span>;</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  }</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"no such kind of node!!"</span>);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span> </div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  rawstr << <span class="stringliteral">""</span>;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span> </div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  }</div><div class="ttc" id="classSVF_1_1PAGEdge_html"><div class="ttname"><a href="classSVF_1_1PAGEdge.html">SVF::PAGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00047">PAGEdge.h:47</a></div></div>
|
|
380
380
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
381
381
|
<div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
|
|
382
382
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00114">VFGNode.h:114</a></div></div>
|
|
@@ -417,8 +417,8 @@ template<class EdgeIter > </div>
|
|
|
417
417
|
</table>
|
|
418
418
|
</div><div class="memdoc">
|
|
419
419
|
|
|
420
|
-
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#
|
|
421
|
-
<div class="fragment"><div class="line"><a name="
|
|
420
|
+
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l00935">935</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
|
|
421
|
+
<div class="fragment"><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  {</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="keywordflow">if</span> (isSimple())</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="keywordflow">return</span> getSimpleNodeLabel(node, graph);</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keywordflow">return</span> getCompleteNodeLabel(node, graph);</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  }</div></div><!-- fragment -->
|
|
422
422
|
</div>
|
|
423
423
|
</div>
|
|
424
424
|
<a id="a0159404d5c5a7816a4b679c0f35a546e"></a>
|
|
@@ -457,8 +457,8 @@ template<class EdgeIter > </div>
|
|
|
457
457
|
|
|
458
458
|
<p>Return label of a VFG node without MemSSA information. </p>
|
|
459
459
|
|
|
460
|
-
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#
|
|
461
|
-
<div class="fragment"><div class="line"><a name="
|
|
460
|
+
<p class="definition">Definition at line <a class="el" href="VFG_8cpp_source.html#l00944">944</a> of file <a class="el" href="VFG_8cpp_source.html">VFG.cpp</a>.</p>
|
|
461
|
+
<div class="fragment"><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  {</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  std::string str;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a>* stmtNode = SVFUtil::dyn_cast<StmtVFGNode>(node))</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  {</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  rawstr << stmtNode->toString();</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  }</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHIVFGNode</a>* tphi = SVFUtil::dyn_cast<PHIVFGNode>(node))</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  {</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  rawstr << tphi->toString();</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  }</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a>* fp = SVFUtil::dyn_cast<FormalParmVFGNode>(node))</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  rawstr << fp->toString();</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  }</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a>* ap = SVFUtil::dyn_cast<ActualParmVFGNode>(node))</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  {</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  rawstr << ap->toString();</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  }</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a>* ar = SVFUtil::dyn_cast<ActualRetVFGNode>(node))</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  {</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  rawstr << ar->toString();</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  }</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a>* fr = SVFUtil::dyn_cast<FormalRetVFGNode>(node))</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  {</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  rawstr << fr->toString();</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  }</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<NullPtrVFGNode>(node))</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  {</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  rawstr << <span class="stringliteral">"NullPtr"</span>;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  }</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1BinaryOPVFGNode.html">BinaryOPVFGNode</a>* bop = SVFUtil::dyn_cast<BinaryOPVFGNode>(node))</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  {</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  rawstr << bop->toString();</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  }</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1UnaryOPVFGNode.html">UnaryOPVFGNode</a>* uop = SVFUtil::dyn_cast<UnaryOPVFGNode>(node))</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  {</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  rawstr << uop->toString();</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  }</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CmpVFGNode.html">CmpVFGNode</a>* cmp = SVFUtil::dyn_cast<CmpVFGNode>(node))</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  {</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  rawstr << cmp->toString();;</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  }</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"what else kinds of nodes do we have??"</span>);</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span> </div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  }</div><div class="ttc" id="classSVF_1_1BinaryOPVFGNode_html"><div class="ttname"><a href="classSVF_1_1BinaryOPVFGNode.html">SVF::BinaryOPVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00388">VFGNode.h:388</a></div></div>
|
|
462
462
|
<div class="ttc" id="classSVF_1_1ActualParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualParmVFGNode.html">SVF::ActualParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00779">VFGNode.h:779</a></div></div>
|
|
463
463
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
464
464
|
<div class="ttc" id="classSVF_1_1PHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html">SVF::PHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00572">VFGNode.h:572</a></div></div>
|
package/build.sh
CHANGED
|
@@ -10,13 +10,16 @@
|
|
|
10
10
|
########
|
|
11
11
|
SVFHOME=$(pwd)
|
|
12
12
|
sysOS=$(uname -s)
|
|
13
|
-
MacLLVM="https://github.com/llvm/llvm-project/releases/download/llvmorg-
|
|
14
|
-
UbuntuLLVM="https://github.com/llvm/llvm-project/releases/download/llvmorg-
|
|
13
|
+
MacLLVM="https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.0/clang+llvm-13.0.0-x86_64-apple-darwin.tar.xz"
|
|
14
|
+
UbuntuLLVM="https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.0/clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz"
|
|
15
15
|
MacZ3="https://github.com/Z3Prover/z3/releases/download/z3-4.8.8/z3-4.8.8-x64-osx-10.14.6.zip"
|
|
16
16
|
UbuntuZ3="https://github.com/Z3Prover/z3/releases/download/z3-4.8.8/z3-4.8.8-x64-ubuntu-16.04.zip"
|
|
17
17
|
MacCTIR="https://github.com/mbarbar/ctir/releases/download/ctir-10.c3/ctir-clang-v10.c3-macos10.15.zip"
|
|
18
18
|
UbuntuCTIR="https://github.com/mbarbar/ctir/releases/download/ctir-10.c3/ctir-clang-v10.c3-ubuntu18.04.zip"
|
|
19
|
-
|
|
19
|
+
|
|
20
|
+
# Keep LLVM version suffix for version checking and better debugging
|
|
21
|
+
# keep the version consistent with LLVM_DIR in setup.sh and llvm_version in Dockerfile
|
|
22
|
+
LLVMHome="llvm-13.0.0.obj"
|
|
20
23
|
Z3Home="z3.obj"
|
|
21
24
|
CTIRHome="ctir.obj"
|
|
22
25
|
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
#include <system_error>
|
|
35
35
|
#include <llvm/Support/ToolOutputFile.h>
|
|
36
36
|
#include <llvm/Support/FileSystem.h> // for file open flag
|
|
37
|
+
#include <llvm/ADT/GraphTraits.h>
|
|
37
38
|
|
|
38
39
|
namespace llvm
|
|
39
40
|
{
|
|
@@ -60,7 +61,7 @@ public:
|
|
|
60
61
|
std::string Filename = GraphName + ".dot";
|
|
61
62
|
O << "Writing '" << Filename << "'...";
|
|
62
63
|
std::error_code ErrInfo;
|
|
63
|
-
llvm::ToolOutputFile F(Filename.c_str(), ErrInfo, llvm::sys::fs::
|
|
64
|
+
llvm::ToolOutputFile F(Filename.c_str(), ErrInfo, llvm::sys::fs::OF_None);
|
|
64
65
|
|
|
65
66
|
if (!ErrInfo)
|
|
66
67
|
{
|
|
@@ -581,7 +581,7 @@ public:
|
|
|
581
581
|
mutPTData.dumpPTData();
|
|
582
582
|
/// dump points-to of address-taken variables
|
|
583
583
|
std::error_code ErrInfo;
|
|
584
|
-
ToolOutputFile F("svfg_pts.data", ErrInfo, llvm::sys::fs::
|
|
584
|
+
ToolOutputFile F("svfg_pts.data", ErrInfo, llvm::sys::fs::OF_None);
|
|
585
585
|
if (!ErrInfo)
|
|
586
586
|
{
|
|
587
587
|
raw_fd_ostream & osm = F.os();
|
|
@@ -539,15 +539,15 @@ public:
|
|
|
539
539
|
CPtSet cpts2;
|
|
540
540
|
expandFIObjs(pts2,cpts2);
|
|
541
541
|
if (containBlackHoleNode(cpts1) || containBlackHoleNode(cpts2))
|
|
542
|
-
return llvm::MayAlias;
|
|
542
|
+
return llvm::AliasResult::MayAlias;
|
|
543
543
|
else if(this->getAnalysisTy()==PathS_DDA && contains(cpts1,cpts2) && contains(cpts2,cpts1))
|
|
544
544
|
{
|
|
545
|
-
return llvm::MustAlias;
|
|
545
|
+
return llvm::AliasResult::MustAlias;
|
|
546
546
|
}
|
|
547
547
|
else if(overlap(cpts1,cpts2))
|
|
548
|
-
return llvm::MayAlias;
|
|
548
|
+
return llvm::AliasResult::MayAlias;
|
|
549
549
|
else
|
|
550
|
-
return llvm::NoAlias;
|
|
550
|
+
return llvm::AliasResult::NoAlias;
|
|
551
551
|
}
|
|
552
552
|
/// Test blk node for cpts
|
|
553
553
|
inline bool containBlackHoleNode(const CPtSet& cpts)
|
|
@@ -160,9 +160,6 @@ public:
|
|
|
160
160
|
bool isSatisfiableForAll();
|
|
161
161
|
bool isSatisfiableForPairs();
|
|
162
162
|
|
|
163
|
-
/// Get llvm value from a SVFGNode
|
|
164
|
-
const Value* getLLVMValue(const SVFGNode* node) const;
|
|
165
|
-
|
|
166
163
|
/// Get callsite ID and get returnsiteID from SVFGEdge
|
|
167
164
|
//@{
|
|
168
165
|
const CallBlockNode* getCallSite(const SVFGEdge* edge) const;
|
|
@@ -326,7 +326,7 @@ public:
|
|
|
326
326
|
unsigned arg_size() const { return CB->arg_size(); }
|
|
327
327
|
bool arg_empty() const { return CB->arg_empty(); }
|
|
328
328
|
Value *getArgOperand(unsigned i) const { return CB->getArgOperand(i); }
|
|
329
|
-
unsigned getNumArgOperands() const { return CB->
|
|
329
|
+
unsigned getNumArgOperands() const { return CB->arg_size(); }
|
|
330
330
|
Function *getCalledFunction() const { return CB->getCalledFunction(); }
|
|
331
331
|
Value *getCalledValue() const { return CB->getCalledOperand(); }
|
|
332
332
|
Function *getCaller() const { return CB->getCaller(); }
|
package/lib/DDA/DDAPass.cpp
CHANGED
package/lib/Graphs/SVFG.cpp
CHANGED
|
@@ -161,26 +161,6 @@ const std::string ThreadMHPIndSVFGEdge::toString() const {
|
|
|
161
161
|
return rawstr.str();
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
const Value* StmtSVFGNode::getValue() const {
|
|
165
|
-
return getPAGEdge()->getValue();
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
const Value* CmpVFGNode::getValue() const {
|
|
169
|
-
return getRes()->getValue();
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
const Value* BinaryOPVFGNode::getValue() const {
|
|
173
|
-
return getRes()->getValue();
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
const Value* PHIVFGNode::getValue() const {
|
|
177
|
-
return getRes()->getValue();
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
const Value* ArgumentVFGNode::getValue() const {
|
|
181
|
-
return param->getValue();
|
|
182
|
-
}
|
|
183
|
-
|
|
184
164
|
|
|
185
165
|
FormalOUTSVFGNode::FormalOUTSVFGNode(NodeID id, const MRVer* mrVer, const FunExitBlockNode* funExit): MRSVFGNode(id, FPOUT)
|
|
186
166
|
{
|
package/lib/Graphs/VFG.cpp
CHANGED
|
@@ -891,7 +891,25 @@ const SVFFunction* VFG::isFunEntryVFGNode(const VFGNode* node) const
|
|
|
891
891
|
}
|
|
892
892
|
|
|
893
893
|
|
|
894
|
+
const Value* StmtVFGNode::getValue() const {
|
|
895
|
+
return getPAGEdge()->getValue();
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
const Value* CmpVFGNode::getValue() const {
|
|
899
|
+
return getRes()->getValue();
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
const Value* BinaryOPVFGNode::getValue() const {
|
|
903
|
+
return getRes()->getValue();
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
const Value* PHIVFGNode::getValue() const {
|
|
907
|
+
return getRes()->getValue();
|
|
908
|
+
}
|
|
894
909
|
|
|
910
|
+
const Value* ArgumentVFGNode::getValue() const {
|
|
911
|
+
return param->getValue();
|
|
912
|
+
}
|
|
895
913
|
|
|
896
914
|
/*!
|
|
897
915
|
* GraphTraits specialization
|