svf-tools 1.0.604 → 1.0.606
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 +216 -229
- 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
|
@@ -83,7 +83,7 @@ $(function() {
|
|
|
83
83
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00257">SVFValue.h:257</a></div></div>
|
|
84
84
|
<div class="ttc" id="SVFType_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00424">SVFType.h:424</a></div></div>
|
|
85
85
|
<div class="ttc" id="classSVF_1_1ObjVar_html"><div class="ttname"><a href="classSVF_1_1ObjVar.html">SVF::ObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00304">SVFVariables.h:304</a></div></div>
|
|
86
|
-
<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#
|
|
86
|
+
<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>
|
|
87
87
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a8e1a6710a05e08b9ed87e373bd5bd0ee"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a8e1a6710a05e08b9ed87e373bd5bd0ee">SVF::ThreadCallGraph::addDirectJoinEdge</a></div><div class="ttdeci">void addDirectJoinEdge(const CallICFGNode *cs, const CallSiteSet &forksite)</div><div class="ttdoc">Add thread join edges. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8cpp_source.html#l00194">ThreadCallGraph.cpp:194</a></div></div>
|
|
88
88
|
<div class="ttc" id="classSVF_1_1IRGraph_html_a43514023a4f4d0c32f536f51443b0efc"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const SVFValue *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00128">IRGraph.h:128</a></div></div>
|
|
89
89
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_af1146c3d8e8b8885a1c48701e5b5a27f"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#af1146c3d8e8b8885a1c48701e5b5a27f">SVF::ThreadCallGraph::tdAPI</a></div><div class="ttdeci">ThreadAPI * tdAPI</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00411">ThreadCallGraph.h:411</a></div></div>
|
|
@@ -77,7 +77,7 @@ $(function() {
|
|
|
77
77
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00257">SVFValue.h:257</a></div></div>
|
|
78
78
|
<div class="ttc" id="VFG_8h_html"><div class="ttname"><a href="VFG_8h.html">VFG.h</a></div></div>
|
|
79
79
|
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
|
|
80
|
-
<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#
|
|
80
|
+
<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>
|
|
81
81
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00107">SVFIR.h:107</a></div></div>
|
|
82
82
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00347">GenericGraph.h:347</a></div></div>
|
|
83
83
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
|
|
@@ -99,7 +99,7 @@ $(function() {
|
|
|
99
99
|
<div class="ttc" id="classSVF_1_1SVFG_html_a8dd513e8e5343beeb5d117c1ff4e45ea"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8dd513e8e5343beeb5d117c1ff4e45ea">SVF::SVFG::addDummyVersionPropSVFGNode</a></div><div class="ttdeci">const DummyVersionPropSVFGNode * addDummyVersionPropSVFGNode(const NodeID object, const NodeID version)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00257">SVFG.h:257</a></div></div>
|
|
100
100
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a4a594c8d6ccaa27b5328c6388fdb258d"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a4a594c8d6ccaa27b5328c6388fdb258d">SVF::VersionedFlowSensitive::meldLabelingTime</a></div><div class="ttdeci">double meldLabelingTime</div><div class="ttdoc">Time to meld label SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00237">VersionedFlowSensitive.h:237</a></div></div>
|
|
101
101
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_ac33c7cef2d1d143950820ea48e97e806"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#ac33c7cef2d1d143950820ea48e97e806">SVF::VersionedFlowSensitive::setYield</a></div><div class="ttdeci">void setYield(const NodeID l, const NodeID o, const Version v)</div><div class="ttdoc">Sets the yielded version of o at l to v. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00826">VersionedFlowSensitive.cpp:826</a></div></div>
|
|
102
|
-
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a42a7e39e0e15576742f8ba7c32579ea2"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a42a7e39e0e15576742f8ba7c32579ea2">SVF::FlowSensitive::isStrongUpdate</a></div><div class="ttdeci">bool isStrongUpdate(const SVFGNode *node, NodeID &singleton)</div><div class="ttdoc">Return TRUE if this is a strong update STORE statement. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#
|
|
102
|
+
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a42a7e39e0e15576742f8ba7c32579ea2"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a42a7e39e0e15576742f8ba7c32579ea2">SVF::FlowSensitive::isStrongUpdate</a></div><div class="ttdeci">bool isStrongUpdate(const SVFGNode *node, NodeID &singleton)</div><div class="ttdoc">Return TRUE if this is a strong update STORE statement. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00613">FlowSensitive.cpp:613</a></div></div>
|
|
103
103
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
|
|
104
104
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_ab88b7a966177e620c552d507b3763e17"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#ab88b7a966177e620c552d507b3763e17">SVF::VersionedFlowSensitive::VersionedFlowSensitive</a></div><div class="ttdeci">VersionedFlowSensitive(SVFIR *_pag, PTATY type=VFS_WPA)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00030">VersionedFlowSensitive.cpp:30</a></div></div>
|
|
105
105
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00257">SVFValue.h:257</a></div></div>
|
|
@@ -112,7 +112,7 @@ $(function() {
|
|
|
112
112
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a03f5f16377daa0258166a73de3e21f07"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07">SVF::VersionedFlowSensitive::vPtD</a></div><div class="ttdeci">BVDataPTAImpl::VersionedPTDataTy * vPtD</div><div class="ttdoc">Points-to DS for working with versions. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00214">VersionedFlowSensitive.h:214</a></div></div>
|
|
113
113
|
<div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aaae8c6858593ed050dcf2c9220228e3e"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aaae8c6858593ed050dcf2c9220228e3e">SVF::VersionedFlowSensitive::prelabeledObjects</a></div><div class="ttdeci">Set< NodeID > prelabeledObjects</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00211">VersionedFlowSensitive.h:211</a></div></div>
|
|
114
114
|
<div class="ttc" id="classSVF_1_1VFGNode_html_a0675465e11d1d42ee7e2b7ab3c5de829"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a0675465e11d1d42ee7e2b7ab3c5de829">SVF::VFGNode::getICFGNode</a></div><div class="ttdeci">virtual const ICFGNode * getICFGNode() const</div><div class="ttdoc">Return corresponding ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00072">VFGNode.h:72</a></div></div>
|
|
115
|
-
<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#
|
|
115
|
+
<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>
|
|
116
116
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_afed358369102f01f6fe88b1433e704c3"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">SVF::FlowSensitive::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00121">FlowSensitive.cpp:121</a></div></div>
|
|
117
117
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a9f96e6a886fa69e07cda5dbfaed8b7c9"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">SVF::SparseBitVector::count</a></div><div class="ttdeci">unsigned count() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01104">SparseBitVector.h:1104</a></div></div>
|
|
118
118
|
<div class="ttc" id="classSVF_1_1Options_html_af34d8a738db4f40addc1de930e79654f"><div class="ttname"><a href="classSVF_1_1Options.html#af34d8a738db4f40addc1de930e79654f">SVF::Options::PredictPtOcc</a></div><div class="ttdeci">static const llvm::cl::opt< bool > PredictPtOcc</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00066">Options.h:66</a></div></div>
|
|
@@ -296,7 +296,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
296
296
|
<p>Build Bidirectional graph by copying nodes and edges from const graph inherited from <a class="el" href="classSVF_1_1GenericGraph.html">GenericGraph</a>. </p>
|
|
297
297
|
|
|
298
298
|
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8cpp_source.html#l00162">162</a> of file <a class="el" href="CFLGraphBuilder_8cpp_source.html">CFLGraphBuilder.cpp</a>.</p>
|
|
299
|
-
<div class="fragment"><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  CFLGraph *cflGraph = <span class="keyword">new</span> CFLGraph(startKind);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">externMap</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar->getTerminals())</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.find(pairV.first) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.end())</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.find(pairV.second) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.end())</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar->getNonterminals())</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.find(pairV.first) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.end())</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.find(pairV.second) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.end())</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph->begin(); it!= graph->end(); it++)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  CFLNode* node = <span class="keyword">new</span> CFLNode((*it).first);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  cflGraph->addCFLNode((*it).first, node);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph->begin(); it!= graph->end(); it++)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  ConstraintNode* node = (*it).second;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">for</span>(ConstraintEdge* edge : node->getOutEdges())</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a> edgeLabel = edge->getEdgeKind();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">// Need to get the offset from the Const Edge</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// The offset present edge is only from Normal Gep CG at moment</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NormalGepCGEdge.html#a79033645683ead9a7404cd35fd936092">NormalGepCGEdge::classof</a>(edge))</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  NormalGepCGEdge *nGepEdge = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><NormalGepCGEdge>(edge);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">CFLGrammar::Attribute</a> attr = nGepEdge->getConstantFieldIdx();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(edgeLabel, attr);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  edgeLabel = <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, edgeLabel);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[edge->getEdgeKind()];</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  key.append(<span class="stringliteral">"bar"</span>); <span class="comment">// for example Gep_i should be Gepbar_i, not Gep_ibar</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]));</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key], attr);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[edge->getEdgeKind()];</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  key.append(<span class="stringliteral">"bar"</span>);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">return</span> cflGraph;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t<!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#l00398">Casting.h:398</a></div></div>
|
|
299
|
+
<div class="fragment"><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  CFLGraph *cflGraph = <span class="keyword">new</span> CFLGraph(startKind);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">externMap</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar->getTerminals())</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.find(pairV.first) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.end())</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.find(pairV.second) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.end())</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar->getNonterminals())</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.find(pairV.first) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.end())</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.find(pairV.second) == <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.end())</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>.insert(make_pair(pairV.second, pairV.first));</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph->begin(); it!= graph->end(); it++)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  CFLNode* node = <span class="keyword">new</span> CFLNode((*it).first);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  cflGraph->addCFLNode((*it).first, node);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph->begin(); it!= graph->end(); it++)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  ConstraintNode* node = (*it).second;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">for</span>(ConstraintEdge* edge : node->getOutEdges())</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a> edgeLabel = edge->getEdgeKind();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">// Need to get the offset from the Const Edge</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// The offset present edge is only from Normal Gep CG at moment</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NormalGepCGEdge.html#a79033645683ead9a7404cd35fd936092">NormalGepCGEdge::classof</a>(edge))</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  NormalGepCGEdge *nGepEdge = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><NormalGepCGEdge>(edge);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">CFLGrammar::Attribute</a> attr = nGepEdge->getConstantFieldIdx();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(edgeLabel, attr);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  edgeLabel = <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, edgeLabel);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[edge->getEdgeKind()];</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  key.append(<span class="stringliteral">"bar"</span>); <span class="comment">// for example Gep_i should be Gepbar_i, not Gep_ibar</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]));</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(<a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key], attr);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[edge->getEdgeKind()];</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  key.append(<span class="stringliteral">"bar"</span>);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">return</span> cflGraph;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t<!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>
|
|
300
300
|
<div class="ttc" id="classSVF_1_1GrammarBase_html_ab070e5449d26e347b957d8b994d0303f"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">SVF::GrammarBase::Attribute</a></div><div class="ttdeci">u32_t Attribute</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00040">CFLGrammar.h:40</a></div></div>
|
|
301
301
|
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_adaa843018284f854ed0ad3bcb1460a01"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">SVF::CFLGraphBuilder::addAttribute</a></div><div class="ttdeci">void addAttribute(CFLGrammar::Kind kind, CFLGrammar::Attribute attribute)</div><div class="ttdoc">add attribute to kind2Attribute Map </div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8cpp_source.html#l00037">CFLGraphBuilder.cpp:37</a></div></div>
|
|
302
302
|
<div class="ttc" id="classSVF_1_1GrammarBase_html_af418e1033618da75e974a04ee1d7e275"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">SVF::GrammarBase::getAttributedKind</a></div><div class="ttdeci">static Kind getAttributedKind(Attribute attribute, Kind kind)</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00265">CFLGrammar.h:265</a></div></div>
|
|
@@ -362,7 +362,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
362
362
|
<div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a">SVF::ConstraintEdge::VariantGep</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
|
|
363
363
|
<div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
|
|
364
364
|
<div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">SVF::ConstraintEdge::Load</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
|
|
365
|
-
<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#
|
|
365
|
+
<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>
|
|
366
366
|
<div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">SVF::ConstraintEdge::Addr</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
|
|
367
367
|
<div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">SVF::ConstraintEdge::Copy</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
|
|
368
368
|
<div class="ttc" id="classSVF_1_1GrammarBase_html_ab070e5449d26e347b957d8b994d0303f"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">SVF::GrammarBase::Attribute</a></div><div class="ttdeci">u32_t Attribute</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00040">CFLGrammar.h:40</a></div></div>
|
|
@@ -1045,7 +1045,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1045
1045
|
<div class="ttc" id="classSVF_1_1AndersenBase_html_aebfe0c7238eb24f74f105b950b86cb5e"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#aebfe0c7238eb24f74f105b950b86cb5e">SVF::AndersenBase::cleanConsCG</a></div><div class="ttdeci">void cleanConsCG(NodeID id)</div><div class="ttdoc">remove redundant gepnodes in constraint graph </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00153">Andersen.cpp:153</a></div></div>
|
|
1046
1046
|
<div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
|
|
1047
1047
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a77a6bb9335aa12d29825af1b5ea07e08"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">SVF::SVFIR::getBaseObjVar</a></div><div class="ttdeci">NodeID getBaseObjVar(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00427">SVFIR.h:427</a></div></div>
|
|
1048
|
-
<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#
|
|
1048
|
+
<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>
|
|
1049
1049
|
<div class="ttc" id="classSVF_1_1AndersenBase_html_a6c3d6b4c004d9e43690c3807502eed74"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a6c3d6b4c004d9e43690c3807502eed74">SVF::AndersenBase::redundantGepNodes</a></div><div class="ttdeci">NodeBS redundantGepNodes</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00119">Andersen.h:119</a></div></div>
|
|
1050
1050
|
<div class="ttc" id="cJSON_8cpp_html_ab6e2ea6dc7bd57d1483413449998230a"><div class="ttname"><a href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a></div><div class="ttdeci">cJSON * n</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02558">cJSON.cpp:2558</a></div></div>
|
|
1051
1051
|
<div class="ttc" id="classSVF_1_1SVFIR_html_ab6abb822445c9b3f5cb2b7206042e940"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ab6abb822445c9b3f5cb2b7206042e940">SVF::SVFIR::MemObjToFieldsMap</a></div><div class="ttdeci">Map< NodeID, NodeBS > MemObjToFieldsMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00055">SVFIR.h:55</a></div></div>
|
|
@@ -1011,7 +1011,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1011
1011
|
<p>Expand field IDs in target pts based on the initials and offsets </p>
|
|
1012
1012
|
|
|
1013
1013
|
<p class="definition">Definition at line <a class="el" href="AndersenSFR_8cpp_source.html#l00120">120</a> of file <a class="el" href="AndersenSFR_8cpp_source.html">AndersenSFR.cpp</a>.</p>
|
|
1014
|
-
<div class="fragment"><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="classSVF_1_1AndersenBase.html#a9f453ec1b4236b8194ae590981217259">numOfFieldExpand</a>++;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">while</span> (!initials.empty())</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> init = *initials.begin();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  initials.erase(init);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#a8ba74f82c1e796f2888ba34bc8355ce9">isBlkObjOrConstantObj</a>(init))</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  expandPts.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(init);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* initPN = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(init);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(init);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> maxLimit = obj-><a class="code" href="classSVF_1_1MemObj.html#a51be7ad70bc2c6a4230bd2f6b86bdc88">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> initOffset;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *gepNode = SVFUtil::dyn_cast<GepObjVar>(initPN))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  initOffset = gepNode->getConstantFieldIdx();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<FIObjVar
|
|
1014
|
+
<div class="fragment"><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="classSVF_1_1AndersenBase.html#a9f453ec1b4236b8194ae590981217259">numOfFieldExpand</a>++;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">while</span> (!initials.empty())</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> init = *initials.begin();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  initials.erase(init);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#a8ba74f82c1e796f2888ba34bc8355ce9">isBlkObjOrConstantObj</a>(init))</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  expandPts.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(init);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* initPN = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(init);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(init);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> maxLimit = obj-><a class="code" href="classSVF_1_1MemObj.html#a51be7ad70bc2c6a4230bd2f6b86bdc88">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> initOffset;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *gepNode = SVFUtil::dyn_cast<GepObjVar>(initPN))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  initOffset = gepNode->getConstantFieldIdx();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<FIObjVar, DummyObjVar>(initPN))</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  initOffset = 0;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"Not an object node!!"</span>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  abort();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<s32_t></a> offsets;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  offsets.insert(<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// calculate offsets</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordtype">bool</span> loopFlag = <span class="keyword">true</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">while</span> (loopFlag)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  loopFlag = <span class="keyword">false</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> _f : offsets)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> _s : strides)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> _f1 = _f + _s;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  loopFlag = (offsets.find(_f1) == offsets.end()) && ( (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)(initOffset + _f1) < maxLimit);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span> (loopFlag)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  offsets.insert(_f1);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="comment">// get gep objs</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> _f : offsets)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> gepId = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#a3f727a2822fb18a14ce9e10c6534cf5a">getGepObjVar</a>(init, <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(_f));</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  initials.erase(gepId); <span class="comment">// gep id in initials should be removed to avoid redundant derivation</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  expandPts.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(gepId);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> }</div><div class="ttc" id="classSVF_1_1ConstraintGraph_html_a8ba74f82c1e796f2888ba34bc8355ce9"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a8ba74f82c1e796f2888ba34bc8355ce9">SVF::ConstraintGraph::isBlkObjOrConstantObj</a></div><div class="ttdeci">bool isBlkObjOrConstantObj(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00310">ConsG.h:310</a></div></div>
|
|
1015
1015
|
<div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00348">SymbolTableInfo.h:348</a></div></div>
|
|
1016
1016
|
<div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
|
|
1017
1017
|
<div class="ttc" id="classSVF_1_1SVFIR_html_af76a55c3b8255a81a566bdce35ffc749"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">SVF::SVFIR::getBaseObj</a></div><div class="ttdeci">const MemObj * getBaseObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00431">SVFIR.h:431</a></div></div>
|
|
@@ -1174,7 +1174,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1174
1174
|
<div class="ttc" id="classSVF_1_1Andersen_html_ab7dadfd4d810be4863f03ed996b3b3c4"><div class="ttname"><a href="classSVF_1_1Andersen.html#ab7dadfd4d810be4863f03ed996b3b3c4">SVF::Andersen::unionPts</a></div><div class="ttdeci">virtual bool unionPts(NodeID id, const PointsTo &target)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00217">Andersen.h:217</a></div></div>
|
|
1175
1175
|
<div class="ttc" id="classSVF_1_1NormalGepCGEdge_html"><div class="ttname"><a href="classSVF_1_1NormalGepCGEdge.html">SVF::NormalGepCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00265">ConsGEdge.h:265</a></div></div>
|
|
1176
1176
|
<div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
|
|
1177
|
-
<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#
|
|
1177
|
+
<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>
|
|
1178
1178
|
<div class="ttc" id="classSVF_1_1AndersenSFR_html_aa768e5cd0a762d17e2ec2baaad0486bf"><div class="ttname"><a href="classSVF_1_1AndersenSFR.html#aa768e5cd0a762d17e2ec2baaad0486bf">SVF::AndersenSFR::fieldExpand</a></div><div class="ttdeci">void fieldExpand(NodeSet &initials, s32_t offset, NodeBS &strides, PointsTo &expandPts)</div><div class="ttdef"><b>Definition:</b> <a href="AndersenSFR_8cpp_source.html#l00120">AndersenSFR.cpp:120</a></div></div>
|
|
1179
1179
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00095">GenericGraph.h:95</a></div></div>
|
|
1180
1180
|
<div class="ttc" id="classSVF_1_1PointsTo_html_ac4688413177b49b37dbbfd3ed188d59b"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">SVF::PointsTo::empty</a></div><div class="ttdeci">bool empty(void) const</div><div class="ttdoc">Returns true if set is empty. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00094">PointsTo.cpp:94</a></div></div>
|
|
@@ -1509,7 +1509,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1509
1509
|
</div><div class="memdoc">
|
|
1510
1510
|
|
|
1511
1511
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00185">185</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1512
|
-
<div class="fragment"><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a5c2288519153467142e74c8dd4e77180">DFPTDataTy</a>* df = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a5c2288519153467142e74c8dd4e77180">DFPTDataTy</a>>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  assert(df && <span class="stringliteral">"BVDataPTAImpl::getDFPTDataTy: not a DFPTDataTy!"</span>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> df;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t<!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#
|
|
1512
|
+
<div class="fragment"><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a5c2288519153467142e74c8dd4e77180">DFPTDataTy</a>* df = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a5c2288519153467142e74c8dd4e77180">DFPTDataTy</a>>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  assert(df && <span class="stringliteral">"BVDataPTAImpl::getDFPTDataTy: not a DFPTDataTy!"</span>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> df;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t<!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>
|
|
1513
1513
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a5c2288519153467142e74c8dd4e77180"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a5c2288519153467142e74c8dd4e77180">SVF::BVDataPTAImpl::DFPTDataTy</a></div><div class="ttdeci">DFPTData< NodeID, NodeSet, NodeID, PointsTo > DFPTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00048">PointerAnalysisImpl.h:48</a></div></div>
|
|
1514
1514
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00215">PointerAnalysisImpl.h:215</a></div></div>
|
|
1515
1515
|
</div><!-- fragment -->
|
|
@@ -1539,7 +1539,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1539
1539
|
</div><div class="memdoc">
|
|
1540
1540
|
|
|
1541
1541
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00178">178</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1542
|
-
<div class="fragment"><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#abd8bb73e9beac5e39667091b1e211bd3">DiffPTDataTy</a>* diff = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1BVDataPTAImpl.html#abd8bb73e9beac5e39667091b1e211bd3">DiffPTDataTy</a>>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  assert(diff && <span class="stringliteral">"BVDataPTAImpl::getDiffPTDataTy: not a DiffPTDataTy!"</span>);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> diff;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t<!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#
|
|
1542
|
+
<div class="fragment"><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#abd8bb73e9beac5e39667091b1e211bd3">DiffPTDataTy</a>* diff = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1BVDataPTAImpl.html#abd8bb73e9beac5e39667091b1e211bd3">DiffPTDataTy</a>>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  assert(diff && <span class="stringliteral">"BVDataPTAImpl::getDiffPTDataTy: not a DiffPTDataTy!"</span>);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> diff;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t<!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>
|
|
1543
1543
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00215">PointerAnalysisImpl.h:215</a></div></div>
|
|
1544
1544
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_abd8bb73e9beac5e39667091b1e211bd3"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#abd8bb73e9beac5e39667091b1e211bd3">SVF::BVDataPTAImpl::DiffPTDataTy</a></div><div class="ttdeci">DiffPTData< NodeID, NodeSet, NodeID, PointsTo > DiffPTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00047">PointerAnalysisImpl.h:47</a></div></div>
|
|
1545
1545
|
</div><!-- fragment -->
|
|
@@ -1569,7 +1569,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1569
1569
|
</div><div class="memdoc">
|
|
1570
1570
|
|
|
1571
1571
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00192">192</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1572
|
-
<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac130bf326911b8e5396f57daa78566e7">MutDFPTDataTy</a>* mdf = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac130bf326911b8e5396f57daa78566e7">MutDFPTDataTy</a>>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  assert(mdf && <span class="stringliteral">"BVDataPTAImpl::getMutDFPTDataTy: not a MutDFPTDataTy!"</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">return</span> mdf;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t<!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#
|
|
1572
|
+
<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac130bf326911b8e5396f57daa78566e7">MutDFPTDataTy</a>* mdf = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac130bf326911b8e5396f57daa78566e7">MutDFPTDataTy</a>>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  assert(mdf && <span class="stringliteral">"BVDataPTAImpl::getMutDFPTDataTy: not a MutDFPTDataTy!"</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">return</span> mdf;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t<!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>
|
|
1573
1573
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ac130bf326911b8e5396f57daa78566e7"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ac130bf326911b8e5396f57daa78566e7">SVF::BVDataPTAImpl::MutDFPTDataTy</a></div><div class="ttdeci">MutableDFPTData< NodeID, NodeSet, NodeID, PointsTo > MutDFPTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00053">PointerAnalysisImpl.h:53</a></div></div>
|
|
1574
1574
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00215">PointerAnalysisImpl.h:215</a></div></div>
|
|
1575
1575
|
</div><!-- fragment -->
|
|
@@ -1729,7 +1729,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1729
1729
|
|
|
1730
1730
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00199">199</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1731
1731
|
<div class="fragment"><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a8bc5e039958280b18e5a00a56e0bdc94">VersionedPTDataTy</a>* v = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a8bc5e039958280b18e5a00a56e0bdc94">VersionedPTDataTy</a>>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  assert(v && <span class="stringliteral">"BVDataPTAImpl::getVersionedPTDataTy: not a VersionedPTDataTy!"</span>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">return</span> v;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a8bc5e039958280b18e5a00a56e0bdc94"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a8bc5e039958280b18e5a00a56e0bdc94">SVF::BVDataPTAImpl::VersionedPTDataTy</a></div><div class="ttdeci">VersionedPTData< NodeID, NodeSet, NodeID, PointsTo, VersionedVar, Set< VersionedVar > > VersionedPTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00049">PointerAnalysisImpl.h:49</a></div></div>
|
|
1732
|
-
<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#
|
|
1732
|
+
<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>
|
|
1733
1733
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00215">PointerAnalysisImpl.h:215</a></div></div>
|
|
1734
1734
|
</div><!-- fragment -->
|
|
1735
1735
|
</div>
|
|
@@ -1769,7 +1769,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1769
1769
|
<div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
|
|
1770
1770
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a77a6bb9335aa12d29825af1b5ea07e08"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">SVF::SVFIR::getBaseObjVar</a></div><div class="ttdeci">NodeID getBaseObjVar(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00427">SVFIR.h:427</a></div></div>
|
|
1771
1771
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a112f2ede1240c95f9fe810f2882fab80"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">SVF::SparseBitVector::test</a></div><div class="ttdeci">bool test(unsigned Idx) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00708">SparseBitVector.h:708</a></div></div>
|
|
1772
|
-
<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#
|
|
1772
|
+
<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>
|
|
1773
1773
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a4909696c946cf6aba12542ec51766b64"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a4909696c946cf6aba12542ec51766b64">SVF::BVDataPTAImpl::clearPts</a></div><div class="ttdeci">virtual void clearPts(NodeID id, NodeID element)</div><div class="ttdoc">Remove element from the points-to set of id. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00110">PointerAnalysisImpl.h:110</a></div></div>
|
|
1774
1774
|
<div class="ttc" id="cJSON_8cpp_html_ab6e2ea6dc7bd57d1483413449998230a"><div class="ttname"><a href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a></div><div class="ttdeci">cJSON * n</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02558">cJSON.cpp:2558</a></div></div>
|
|
1775
1775
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00373">GenericGraph.h:373</a></div></div>
|
|
@@ -328,7 +328,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
328
328
|
<p>Implements <a class="el" href="classSVF_1_1SVFStat.html#a77c24aa3409dcbf56f57302f237b1eeb">SVF::SVFStat</a>.</p>
|
|
329
329
|
|
|
330
330
|
<p class="definition">Definition at line <a class="el" href="CFLStat_8cpp_source.html#l00080">80</a> of file <a class="el" href="CFLStat_8cpp_source.html">CFLStat.cpp</a>.</p>
|
|
331
|
-
<div class="fragment"><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  assert((SVFUtil::isa<CFLAlias
|
|
331
|
+
<div class="fragment"><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  assert((SVFUtil::isa<CFLAlias, CFLVF>(<a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>)) && <span class="stringliteral">"not an CFLAlias pass!! what else??"</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="classSVF_1_1SVFStat.html#a1b7f1e3381de87f75f06cddb9c6c1ec1">endClk</a>();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// Grammar stat</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="classSVF_1_1CFLStat.html#a1fbe39f511320df60f54235bd7842257">CFLGrammarStat</a>();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// CFLGraph stat</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="classSVF_1_1CFLStat.html#a75710bf2e22ec4881026104e815751cf">CFLGraphStat</a>();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// Solver stat</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="classSVF_1_1CFLStat.html#aced1956e5d8b47cdfea62b9d3ce8d8d6">CFLSolverStat</a>();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Stat about Call graph and General stat</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="classSVF_1_1PTAStat.html#ad6de9d3f25c20705768000c987af0eb6">PTAStat::performStat</a>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> }</div><div class="ttc" id="classSVF_1_1SVFStat_html_a1b7f1e3381de87f75f06cddb9c6c1ec1"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a1b7f1e3381de87f75f06cddb9c6c1ec1">SVF::SVFStat::endClk</a></div><div class="ttdeci">virtual void endClk()</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00063">SVFStat.h:63</a></div></div>
|
|
332
332
|
<div class="ttc" id="classSVF_1_1CFLStat_html_a6fc506f947be6c9309cc8914c6a8c3e0"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">SVF::CFLStat::pta</a></div><div class="ttdeci">CFLBase * pta</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00047">CFLStat.h:47</a></div></div>
|
|
333
333
|
<div class="ttc" id="classSVF_1_1CFLStat_html_a75710bf2e22ec4881026104e815751cf"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a75710bf2e22ec4881026104e815751cf">SVF::CFLStat::CFLGraphStat</a></div><div class="ttdeci">void CFLGraphStat()</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8cpp_source.html#l00047">CFLStat.cpp:47</a></div></div>
|
|
334
334
|
<div class="ttc" id="classSVF_1_1CFLStat_html_aced1956e5d8b47cdfea62b9d3ce8d8d6"><div class="ttname"><a href="classSVF_1_1CFLStat.html#aced1956e5d8b47cdfea62b9d3ce8d8d6">SVF::CFLStat::CFLSolverStat</a></div><div class="ttdeci">void CFLSolverStat()</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8cpp_source.html#l00067">CFLStat.cpp:67</a></div></div>
|
|
@@ -245,7 +245,7 @@ Private Attributes</h2></td></tr>
|
|
|
245
245
|
<div class="ttc" id="classSVF_1_1CHGraph_html_a7beec68a60036c93a741a7152e8198b6"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">SVF::CHGraph::getNode</a></div><div class="ttdeci">CHNode * getNode(const std::string name) const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00087">CHG.cpp:87</a></div></div>
|
|
246
246
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00257">SVFValue.h:257</a></div></div>
|
|
247
247
|
<div class="ttc" id="classSVF_1_1CHNode_html_aa4af6538c9994ec54a7b82691f846a31"><div class="ttname"><a href="classSVF_1_1CHNode.html#aa4af6538c9994ec54a7b82691f846a31">SVF::CHNode::FuncVector</a></div><div class="ttdeci">std::vector< const SVFFunction * > FuncVector</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00114">CHG.h:114</a></div></div>
|
|
248
|
-
<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#
|
|
248
|
+
<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>
|
|
249
249
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
|
|
250
250
|
<div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
|
|
251
251
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a9e66b5eaf8b24917d0d3e2e98461f15c"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a9e66b5eaf8b24917d0d3e2e98461f15c">SVF::cppUtil::getClassNameFromVtblObj</a></div><div class="ttdeci">std::string getClassNameFromVtblObj(const std::string &vtblName)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00435">CPPUtil.cpp:435</a></div></div>
|
|
@@ -350,7 +350,7 @@ Private Attributes</h2></td></tr>
|
|
|
350
350
|
<div class="fragment"><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">isValVtbl</a>(globalvalue) && globalvalue->getNumOperands() > 0)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *vtblStruct = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>>(globalvalue->getOperand(0));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  assert(vtblStruct && <span class="stringliteral">"Initializer of a vtable not a struct?"</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">string</span> className = <a class="code" href="namespaceSVF_1_1cppUtil.html#a9e66b5eaf8b24917d0d3e2e98461f15c">getClassNameFromVtblObj</a>(globalvalue->getName().str());</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-><a class="code" href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">getNode</a>(className))</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="classSVF_1_1CHGBuilder.html#a8e915f257224b1d8e40d0e4c9b5e1df0">createNode</a>(className);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ei = 0; ei < vtblStruct->getNumOperands(); ++ei)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *vtbl = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>>(vtblStruct->getOperand(ei));</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  assert(vtbl && <span class="stringliteral">"Element of initializer not an array?"</span>);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < vtbl->getNumOperands(); ++i)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af983b0e1fbd371d8672e8f03f63084fc">isCastConstantExpr</a>(vtbl->getOperand(i)))</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* bitcastValue = ce->getOperand(0);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast<Function>(bitcastValue))</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">struct </span>DemangledName dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">demangle</a>(func->getName().str());</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-><a class="code" href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">getNode</a>(dname.className))</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="classSVF_1_1CHGBuilder.html#a8e915f257224b1d8e40d0e4c9b5e1df0">createNode</a>(dname.className);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><div class="ttc" id="classSVF_1_1CHGBuilder_html_a8e915f257224b1d8e40d0e4c9b5e1df0"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#a8e915f257224b1d8e40d0e4c9b5e1df0">SVF::CHGBuilder::createNode</a></div><div class="ttdeci">CHNode * createNode(const std::string name)</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8cpp_source.html#l00236">CHGBuilder.cpp:236</a></div></div>
|
|
351
351
|
<div class="ttc" id="namespaceSVF_html_a5ae718cba37d8e34d2946530dc098c8e"><div class="ttname"><a href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">SVF::ConstantArray</a></div><div class="ttdeci">llvm::ConstantArray ConstantArray</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00097">BasicTypes.h:97</a></div></div>
|
|
352
352
|
<div class="ttc" id="classSVF_1_1CHGraph_html_a7beec68a60036c93a741a7152e8198b6"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">SVF::CHGraph::getNode</a></div><div class="ttdeci">CHNode * getNode(const std::string name) const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00087">CHG.cpp:87</a></div></div>
|
|
353
|
-
<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#
|
|
353
|
+
<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>
|
|
354
354
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_af983b0e1fbd371d8672e8f03f63084fc"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#af983b0e1fbd371d8672e8f03f63084fc">SVF::LLVMUtil::isCastConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCastConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00259">LLVMUtil.h:259</a></div></div>
|
|
355
355
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
|
|
356
356
|
<div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
|
|
@@ -358,7 +358,7 @@ Private Attributes</h2></td></tr>
|
|
|
358
358
|
<div class="ttc" id="classSVF_1_1ConstraintNode_html_ab1868f04de44f6fe1e9ac14f3d4ee56b"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">SVF::ConstraintNode::const_iterator</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00045">ConsGNode.h:45</a></div></div>
|
|
359
359
|
<div class="ttc" id="classSVF_1_1ConstraintNode_html_aa77fb67a62abe4c28cecc73d395d7b12"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#aa77fb67a62abe4c28cecc73d395d7b12">SVF::ConstraintNode::directOutEdgeEnd</a></div><div class="ttdeci">iterator directOutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00641">ConsG.cpp:641</a></div></div>
|
|
360
360
|
<div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
|
|
361
|
-
<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#
|
|
361
|
+
<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>
|
|
362
362
|
<div class="ttc" id="classSVF_1_1CSC_html_a44dbda27203499770ed1315366218c51"><div class="ttname"><a href="classSVF_1_1CSC.html#a44dbda27203499770ed1315366218c51">SVF::CSC::_S</a></div><div class="ttdeci">NodeStack _S</div><div class="ttdef"><b>Definition:</b> <a href="CSC_8h_source.html#l00062">CSC.h:62</a></div></div>
|
|
363
363
|
<div class="ttc" id="classSVF_1_1CSC_html_adac02224ec722f0cf1954d7a484bd11e"><div class="ttname"><a href="classSVF_1_1CSC.html#adac02224ec722f0cf1954d7a484bd11e">SVF::CSC::setVisited</a></div><div class="ttdeci">void setVisited(NodeID nId)</div><div class="ttdef"><b>Definition:</b> <a href="CSC_8h_source.html#l00080">CSC.h:80</a></div></div>
|
|
364
364
|
<div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa">SVF::ConstraintEdge::NormalGep</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
|
|
@@ -1418,7 +1418,7 @@ template<class Cond> </div>
|
|
|
1418
1418
|
</div><div class="memdoc">
|
|
1419
1419
|
|
|
1420
1420
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00294">294</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1421
|
-
<div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="classSVF_1_1CondPTAImpl.html#af3ae2748edfdefaa08a73930bd012d6c">MutPTDataTy</a>* mut = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1CondPTAImpl.html#af3ae2748edfdefaa08a73930bd012d6c">MutPTDataTy</a>>(<a class="code" href="classSVF_1_1CondPTAImpl.html#af960c10e49932ea5e9dcdd299ff300ce">ptD</a>);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  assert(mut && <span class="stringliteral">"BVDataPTAImpl::getMutPTDataTy: not a MutPTDataTy!"</span>);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> mut;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t<!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#
|
|
1421
|
+
<div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="classSVF_1_1CondPTAImpl.html#af3ae2748edfdefaa08a73930bd012d6c">MutPTDataTy</a>* mut = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1CondPTAImpl.html#af3ae2748edfdefaa08a73930bd012d6c">MutPTDataTy</a>>(<a class="code" href="classSVF_1_1CondPTAImpl.html#af960c10e49932ea5e9dcdd299ff300ce">ptD</a>);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  assert(mut && <span class="stringliteral">"BVDataPTAImpl::getMutPTDataTy: not a MutPTDataTy!"</span>);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> mut;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af6e96694d983643a66c238cce01bff0e"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af6e96694d983643a66c238cce01bff0e">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if_t<!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>
|
|
1422
1422
|
<div class="ttc" id="classSVF_1_1CondPTAImpl_html_af960c10e49932ea5e9dcdd299ff300ce"><div class="ttname"><a href="classSVF_1_1CondPTAImpl.html#af960c10e49932ea5e9dcdd299ff300ce">SVF::CondPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00464">PointerAnalysisImpl.h:464</a></div></div>
|
|
1423
1423
|
<div class="ttc" id="classSVF_1_1CondPTAImpl_html_af3ae2748edfdefaa08a73930bd012d6c"><div class="ttname"><a href="classSVF_1_1CondPTAImpl.html#af3ae2748edfdefaa08a73930bd012d6c">SVF::CondPTAImpl::MutPTDataTy</a></div><div class="ttdeci">MutablePTData< CVar, Set< CVar >, CVar, CPtSet > MutPTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00254">PointerAnalysisImpl.h:254</a></div></div>
|
|
1424
1424
|
</div><!-- fragment -->
|