svf-tools 1.0.537 → 1.0.540
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 +1 -1
- package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/Andersen_8h_source.html +6 -9
- package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +2 -1
- package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +5 -4
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +15 -15
- package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +4 -4
- package/SVF-doxygen/html/html/CFLGrammar_8txt.html +39 -39
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +20 -8
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +16 -15
- package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +2 -1
- package/SVF-doxygen/html/html/CPPUtil_8h.html +4 -4
- package/SVF-doxygen/html/html/ConsG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAStat_8h.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGStat_8h.html +1 -1
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +2 -1
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8h.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp.html +1 -1
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +5 -3
- package/SVF-doxygen/html/html/Options_8h.html +1 -1
- package/SVF-doxygen/html/html/Options_8h_source.html +5 -3
- package/SVF-doxygen/html/html/PEGGrammar_8txt.html +314 -0
- package/SVF-doxygen/html/html/PTAStat_8cpp.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PTAStat_8h.html +2 -2
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +2 -2
- 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.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGStat_8h.html +1 -1
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +33 -33
- package/SVF-doxygen/html/html/SVFUtil_8h.html +1 -1
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -1
- package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAStat_8h.html +1 -1
- package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder-members.html +12 -11
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +73 -4
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +150 -152
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +46 -141
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +149 -151
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +5 -11
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +161 -163
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -10
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +156 -158
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +14 -20
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +52 -51
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +10 -7
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -1
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -2
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +8 -6
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +54 -2
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +86 -88
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +1 -1
- package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
- package/SVF-doxygen/html/html/dir_eef3a4ca6ca2cab0eb5fbea30ec32c1a.html +0 -2
- package/SVF-doxygen/html/html/files.html +15 -15
- package/SVF-doxygen/html/html/functions_a.html +3 -6
- package/SVF-doxygen/html/html/functions_b.html +3 -0
- package/SVF-doxygen/html/html/functions_c.html +22 -20
- package/SVF-doxygen/html/html/functions_f.html +10 -12
- package/SVF-doxygen/html/html/functions_func.html +5 -8
- package/SVF-doxygen/html/html/functions_func_b.html +3 -0
- package/SVF-doxygen/html/html/functions_func_m.html +1 -4
- package/SVF-doxygen/html/html/functions_func_p.html +2 -2
- package/SVF-doxygen/html/html/functions_i.html +6 -6
- package/SVF-doxygen/html/html/functions_m.html +0 -3
- package/SVF-doxygen/html/html/functions_n.html +3 -0
- package/SVF-doxygen/html/html/functions_o.html +6 -6
- package/SVF-doxygen/html/html/functions_p.html +15 -16
- package/SVF-doxygen/html/html/functions_r.html +2 -2
- package/SVF-doxygen/html/html/functions_s.html +8 -6
- package/SVF-doxygen/html/html/functions_t.html +3 -3
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_n.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_p.html +3 -0
- package/SVF-doxygen/html/html/globals.html +1 -0
- package/SVF-doxygen/html/html/globals_a.html +3 -1
- package/SVF-doxygen/html/html/globals_c.html +6 -5
- package/SVF-doxygen/html/html/globals_e.html +1 -0
- package/SVF-doxygen/html/html/globals_f.html +7 -5
- package/SVF-doxygen/html/html/globals_g.html +7 -3
- package/SVF-doxygen/html/html/globals_m.html +6 -3
- package/SVF-doxygen/html/html/globals_v.html +2 -1
- package/SVF-doxygen/html/html/globals_vars.html +22 -7
- package/SVF-doxygen/html/html/namespaceSVF.html +3 -3
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +4 -4
- package/SVF-doxygen/html/html/search/all_0.js +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +2 -3
- package/SVF-doxygen/html/html/search/all_10.js +11 -9
- package/SVF-doxygen/html/html/search/all_11.js +1 -1
- package/SVF-doxygen/html/html/search/all_12.js +8 -8
- package/SVF-doxygen/html/html/search/all_13.js +4 -4
- package/SVF-doxygen/html/html/search/all_15.js +3 -3
- package/SVF-doxygen/html/html/search/all_2.js +1 -0
- package/SVF-doxygen/html/html/search/all_3.js +4 -4
- package/SVF-doxygen/html/html/search/all_5.js +1 -1
- package/SVF-doxygen/html/html/search/all_6.js +6 -6
- package/SVF-doxygen/html/html/search/all_7.js +4 -4
- package/SVF-doxygen/html/html/search/all_9.js +2 -2
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +2 -2
- package/SVF-doxygen/html/html/search/all_d.js +2 -3
- package/SVF-doxygen/html/html/search/all_e.js +4 -3
- package/SVF-doxygen/html/html/search/all_f.js +2 -2
- package/SVF-doxygen/html/html/search/files_c.js +1 -0
- package/SVF-doxygen/html/html/search/functions_0.js +0 -1
- package/SVF-doxygen/html/html/search/functions_1.js +1 -0
- package/SVF-doxygen/html/html/search/functions_c.js +0 -1
- package/SVF-doxygen/html/html/search/functions_f.js +2 -2
- package/SVF-doxygen/html/html/search/variables_0.js +1 -1
- package/SVF-doxygen/html/html/search/variables_1.js +2 -2
- package/SVF-doxygen/html/html/search/variables_10.js +2 -1
- package/SVF-doxygen/html/html/search/variables_13.js +2 -2
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_3.js +1 -1
- package/SVF-doxygen/html/html/search/variables_5.js +1 -1
- package/SVF-doxygen/html/html/search/variables_6.js +2 -2
- package/SVF-doxygen/html/html/search/variables_7.js +4 -4
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +3 -2
- package/include/CFL/CFGNormalizer.h +3 -3
- package/include/CFL/CFLAlias.h +5 -1
- package/include/CFL/CFLGraphBuilder.h +11 -1
- package/include/CFL/PEGGrammar.txt +28 -0
- package/include/DDA/DDAStat.h +1 -1
- package/include/Graphs/ICFGStat.h +1 -1
- package/include/Graphs/SVFGStat.h +1 -1
- package/include/MTA/MTAStat.h +1 -1
- package/include/MemoryModel/SVFIR.h +1 -4
- package/include/SVF-FE/LLVMUtil.h +2 -2
- package/include/Util/ExtAPI.h +2 -2
- package/include/Util/Options.h +3 -1
- package/include/{MemoryModel → Util}/PTAStat.h +0 -0
- package/include/WPA/Andersen.h +3 -14
- package/include/WPA/WPAStat.h +1 -1
- package/lib/CFL/CFLAlias.cpp +12 -7
- package/lib/CFL/CFLGraphBuilder.cpp +135 -0
- package/lib/CFL/GrammarBuilder.cpp +12 -8
- package/lib/Graphs/SVFGReadWrite.cpp +3 -3
- package/lib/MTA/LockAnalysis.cpp +1 -1
- package/lib/MTA/MHP.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
- package/lib/SVF-FE/CHGBuilder.cpp +1 -1
- package/lib/Util/NodeIDAllocator.cpp +1 -1
- package/lib/Util/Options.cpp +16 -4
- package/lib/Util/PTAStat.cpp +4 -3
- package/lib/WPA/Andersen.cpp +0 -3
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/package.json +1 -1
|
@@ -86,6 +86,8 @@ Public Member Functions</h2></td></tr>
|
|
|
86
86
|
<tr class="memitem:ab19243c4aceffce7b257f3d8cb3050fd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AliasCFLGraphBuilder.html#ab19243c4aceffce7b257f3d8cb3050fd">buildBigraph</a> (<a class="el" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a> *graph, <a class="el" href="classSVF_1_1CFLGraphBuilder.html#a20299631d2b85507af6d81861736db5e">Kind</a> startKind, <a class="el" href="classSVF_1_1GrammarBase.html">GrammarBase</a> *grammar)</td></tr>
|
|
87
87
|
<tr class="memdesc:ab19243c4aceffce7b257f3d8cb3050fd"><td class="mdescLeft"> </td><td class="mdescRight">Build Bidirectional graph by copying nodes and edges from const graph inherited from <a class="el" href="classSVF_1_1GenericGraph.html">GenericGraph</a>. <a href="#ab19243c4aceffce7b257f3d8cb3050fd">More...</a><br /></td></tr>
|
|
88
88
|
<tr class="separator:ab19243c4aceffce7b257f3d8cb3050fd"><td class="memSeparator" colspan="2"> </td></tr>
|
|
89
|
+
<tr class="memitem:ac74b55198d73acebb9843fd13c1fd880"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AliasCFLGraphBuilder.html#ac74b55198d73acebb9843fd13c1fd880">buildBiPEGgraph</a> (<a class="el" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a> *graph, <a class="el" href="classSVF_1_1CFLGraphBuilder.html#a20299631d2b85507af6d81861736db5e">Kind</a> startKind, <a class="el" href="classSVF_1_1GrammarBase.html">GrammarBase</a> *grammar, <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> *pag)</td></tr>
|
|
90
|
+
<tr class="separator:ac74b55198d73acebb9843fd13c1fd880"><td class="memSeparator" colspan="2"> </td></tr>
|
|
89
91
|
<tr class="inherit_header pub_methods_classSVF_1_1CFLGraphBuilder"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classSVF_1_1CFLGraphBuilder')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classSVF_1_1CFLGraphBuilder.html">SVF::CFLGraphBuilder</a></td></tr>
|
|
90
92
|
<tr class="memitem:adaa843018284f854ed0ad3bcb1460a01 inherit pub_methods_classSVF_1_1CFLGraphBuilder"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a> (<a class="el" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a> kind, <a class="el" href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">CFLGrammar::Attribute</a> attribute)</td></tr>
|
|
91
93
|
<tr class="memdesc:adaa843018284f854ed0ad3bcb1460a01 inherit pub_methods_classSVF_1_1CFLGraphBuilder"><td class="mdescLeft"> </td><td class="mdescRight">add attribute to kind2Attribute Map <a href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">More...</a><br /></td></tr>
|
|
@@ -132,7 +134,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
132
134
|
</table>
|
|
133
135
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
134
136
|
<div class="textblock">
|
|
135
|
-
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#
|
|
137
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8h_source.html#l00149">149</a> of file <a class="el" href="CFLGraphBuilder_8h_source.html">CFLGraphBuilder.h</a>.</p>
|
|
136
138
|
</div><h2 class="groupheader">Member Function Documentation</h2>
|
|
137
139
|
<a id="ab19243c4aceffce7b257f3d8cb3050fd"></a>
|
|
138
140
|
<h2 class="memtitle"><span class="permalink"><a href="#ab19243c4aceffce7b257f3d8cb3050fd">◆ </a></span>buildBigraph()</h2>
|
|
@@ -174,11 +176,78 @@ Additional Inherited Members</h2></td></tr>
|
|
|
174
176
|
<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#l00251">CFLGrammar.h:251</a></div></div>
|
|
175
177
|
<div class="ttc" id="classSVF_1_1GrammarBase_html_a7aef5c42fbd8a62dd4a541cc0e8e8187"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">SVF::GrammarBase::Kind</a></div><div class="ttdeci">u32_t Kind</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00039">CFLGrammar.h:39</a></div></div>
|
|
176
178
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
177
|
-
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a7117dbeceeef7a9fcaeee0a84a171590"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">SVF::CFLGraphBuilder::label2KindMap</a></div><div class="ttdeci">Map< std::string, Kind > label2KindMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#
|
|
179
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a7117dbeceeef7a9fcaeee0a84a171590"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">SVF::CFLGraphBuilder::label2KindMap</a></div><div class="ttdeci">Map< std::string, Kind > label2KindMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00048">CFLGraphBuilder.h:48</a></div></div>
|
|
178
180
|
<div class="ttc" id="classSVF_1_1NormalGepCGEdge_html_a79033645683ead9a7404cd35fd936092"><div class="ttname"><a href="classSVF_1_1NormalGepCGEdge.html#a79033645683ead9a7404cd35fd936092">SVF::NormalGepCGEdge::classof</a></div><div class="ttdeci">static bool classof(const NormalGepCGEdge *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast: </div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00277">ConsGEdge.h:277</a></div></div>
|
|
179
|
-
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a461ff21d73f60cf96a3e36672d4c6a6c"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">SVF::CFLGraphBuilder::kind2LabelMap</a></div><div class="ttdeci">Map< Kind, std::string > kind2LabelMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#
|
|
181
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a461ff21d73f60cf96a3e36672d4c6a6c"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">SVF::CFLGraphBuilder::kind2LabelMap</a></div><div class="ttdeci">Map< Kind, std::string > kind2LabelMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00049">CFLGraphBuilder.h:49</a></div></div>
|
|
180
182
|
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
181
|
-
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a91f1f0e8abc8d781eaf8b1a4f025c18e"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">SVF::CFLGraphBuilder::externMap</a></div><div class="ttdeci">bool externMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#
|
|
183
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a91f1f0e8abc8d781eaf8b1a4f025c18e"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">SVF::CFLGraphBuilder::externMap</a></div><div class="ttdeci">bool externMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00051">CFLGraphBuilder.h:51</a></div></div>
|
|
184
|
+
</div><!-- fragment -->
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
<a id="ac74b55198d73acebb9843fd13c1fd880"></a>
|
|
188
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ac74b55198d73acebb9843fd13c1fd880">◆ </a></span>buildBiPEGgraph()</h2>
|
|
189
|
+
|
|
190
|
+
<div class="memitem">
|
|
191
|
+
<div class="memproto">
|
|
192
|
+
<table class="memname">
|
|
193
|
+
<tr>
|
|
194
|
+
<td class="memname"><a class="el" href="classSVF_1_1CFLGraph.html">CFLGraph</a> * SVF::AliasCFLGraphBuilder::buildBiPEGgraph </td>
|
|
195
|
+
<td>(</td>
|
|
196
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a> * </td>
|
|
197
|
+
<td class="paramname"><em>graph</em>, </td>
|
|
198
|
+
</tr>
|
|
199
|
+
<tr>
|
|
200
|
+
<td class="paramkey"></td>
|
|
201
|
+
<td></td>
|
|
202
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1CFLGraphBuilder.html#a20299631d2b85507af6d81861736db5e">Kind</a> </td>
|
|
203
|
+
<td class="paramname"><em>startKind</em>, </td>
|
|
204
|
+
</tr>
|
|
205
|
+
<tr>
|
|
206
|
+
<td class="paramkey"></td>
|
|
207
|
+
<td></td>
|
|
208
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1GrammarBase.html">GrammarBase</a> * </td>
|
|
209
|
+
<td class="paramname"><em>grammar</em>, </td>
|
|
210
|
+
</tr>
|
|
211
|
+
<tr>
|
|
212
|
+
<td class="paramkey"></td>
|
|
213
|
+
<td></td>
|
|
214
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> * </td>
|
|
215
|
+
<td class="paramname"><em>pag</em> </td>
|
|
216
|
+
</tr>
|
|
217
|
+
<tr>
|
|
218
|
+
<td></td>
|
|
219
|
+
<td>)</td>
|
|
220
|
+
<td></td><td></td>
|
|
221
|
+
</tr>
|
|
222
|
+
</table>
|
|
223
|
+
</div><div class="memdoc">
|
|
224
|
+
<p>Build Bidirectional graph by copying nodes and edges from any graph inherited from <a class="el" href="classSVF_1_1GenericGraph.html">GenericGraph</a> And transfer Load Store to copy edge and address edge to construct PEG style CFG </p>
|
|
225
|
+
<p>Process Store</p>
|
|
226
|
+
<p>Check Dst of Store Dereference Node</p>
|
|
227
|
+
<p>Add Addr Edge</p>
|
|
228
|
+
<p>Add Copy Edge</p>
|
|
229
|
+
<p>Process Load</p>
|
|
230
|
+
<p>Check Src of Load Dereference Node</p>
|
|
231
|
+
<p>Add Addr Edge</p>
|
|
232
|
+
<p>Add Copy Edge </p>
|
|
233
|
+
|
|
234
|
+
<p class="definition">Definition at line <a class="el" href="CFLGraphBuilder_8cpp_source.html#l00225">225</a> of file <a class="el" href="CFLGraphBuilder_8cpp_source.html">CFLGraphBuilder.cpp</a>.</p>
|
|
235
|
+
<div class="fragment"><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  CFLGraph *cflGraph = <span class="keyword">new</span> CFLGraph(startKind);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">externMap</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar->getTerminals())</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</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="l00232"></a><span class="lineno"> 232</span>  {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</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="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</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="l00238"></a><span class="lineno"> 238</span>  }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> pairV : grammar->getNonterminals())</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</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="l00243"></a><span class="lineno"> 243</span>  {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>.insert(pairV);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</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="l00247"></a><span class="lineno"> 247</span>  {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</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="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph->begin(); it!= graph->end(); it++)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  CFLNode* node = <span class="keyword">new</span> CFLNode((*it).first);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  cflGraph->addCFLNode((*it).first, node);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = graph->begin(); it!= graph->end(); it++)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  ConstraintNode* node = (*it).second;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">for</span>(ConstraintEdge* edge : node->getOutEdges())</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span> (edge->getEdgeKind() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47">ConstraintEdge::Store</a>)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span> (pag->isNullPtr(edge->getSrcID()) && (<a class="code" href="classSVF_1_1Options.html#a59afe4356aae2133beb4819c013d3fbf">Options::NullDummyNode</a> == <span class="keyword">false</span>))</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  ConstraintNode* Dst = edge->getDstNode();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  ConstraintNode* DerefNode = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  CFLNode* CFLDerefNode = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">for</span> (ConstraintEdge* DstInEdge : Dst->getInEdges())</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">if</span> (DstInEdge->getEdgeKind() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  DerefNode = DstInEdge->getSrcNode();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  CFLDerefNode = cflGraph->getGNode(DstInEdge->getSrcID());</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span> (DerefNode == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> refId = pag->addDummyValNode();</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  CFLDerefNode = <span class="keyword">new</span> CFLNode(refId);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  cflGraph->addCFLNode(refId, CFLDerefNode);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  cflGraph->addCFLEdge(CFLDerefNode, cflGraph->getGNode(edge->getDstID()), <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[<a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>];</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  key.append(<span class="stringliteral">"bar"</span>);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), CFLDerefNode, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(CFLDerefNode->getId()), <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[<a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>];</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  key.append(<span class="stringliteral">"bar"</span>);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  cflGraph->addCFLEdge(cflGraph->getGNode(CFLDerefNode->getId()), cflGraph->getGNode(edge->getSrcID()), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( edge->getEdgeKind() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">ConstraintEdge::Load</a>)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  ConstraintNode* Src = edge->getSrcNode();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  ConstraintNode* DerefNode = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  CFLNode* CFLDerefNode = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">for</span> (ConstraintEdge* SrcInEdge : Src->getInEdges())</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span> (SrcInEdge->getEdgeKind() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  DerefNode = SrcInEdge->getSrcNode();</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  CFLDerefNode = cflGraph->getGNode(SrcInEdge->getSrcID());</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">if</span> (DerefNode == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> refId = pag->addDummyValNode();</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  CFLDerefNode = <span class="keyword">new</span> CFLNode(refId);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  cflGraph->addCFLNode(refId, CFLDerefNode);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  cflGraph->addCFLEdge(CFLDerefNode, cflGraph->getGNode(edge->getSrcID()), <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[<a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>];</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  key.append(<span class="stringliteral">"bar"</span>);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), CFLDerefNode, <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  cflGraph->addCFLEdge(cflGraph->getGNode(CFLDerefNode->getId()), cflGraph->getGNode(edge->getDstID()), <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> key = <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">kind2LabelMap</a>[<a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>];</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  key.append(<span class="stringliteral">"bar"</span>);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(CFLDerefNode->getId()), <a class="code" href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">label2KindMap</a>[key]);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <a class="code" href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">CFLGrammar::Kind</a> edgeLabel = edge->getEdgeKind();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="comment">// Need to get the offset from the Const Edge</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="comment">// The offset present edge is only from Normal Gep CG at moment</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</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="l00335"></a><span class="lineno"> 335</span>  {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  NormalGepCGEdge *nGepEdge = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><NormalGepCGEdge>(edge);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="classSVF_1_1GrammarBase.html#ab070e5449d26e347b957d8b994d0303f">CFLGrammar::Attribute</a> attr = nGepEdge->getConstantFieldIdx();</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <a class="code" href="classSVF_1_1CFLGraphBuilder.html#adaa843018284f854ed0ad3bcb1460a01">addAttribute</a>(edgeLabel, attr);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  edgeLabel = <a class="code" href="classSVF_1_1GrammarBase.html#af418e1033618da75e974a04ee1d7e275">CFLGrammar::getAttributedKind</a>(attr, edgeLabel);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</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="l00342"></a><span class="lineno"> 342</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="l00343"></a><span class="lineno"> 343</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="l00344"></a><span class="lineno"> 344</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="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</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="l00350"></a><span class="lineno"> 350</span>  key.append(<span class="stringliteral">"bar"</span>);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</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="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> cflGraph;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> }</div><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>
|
|
236
|
+
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
237
|
+
<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>
|
|
238
|
+
<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>
|
|
239
|
+
<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>
|
|
240
|
+
<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>
|
|
241
|
+
<div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47">SVF::ConstraintEdge::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
|
|
242
|
+
<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#l00251">CFLGrammar.h:251</a></div></div>
|
|
243
|
+
<div class="ttc" id="classSVF_1_1GrammarBase_html_a7aef5c42fbd8a62dd4a541cc0e8e8187"><div class="ttname"><a href="classSVF_1_1GrammarBase.html#a7aef5c42fbd8a62dd4a541cc0e8e8187">SVF::GrammarBase::Kind</a></div><div class="ttdeci">u32_t Kind</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8h_source.html#l00039">CFLGrammar.h:39</a></div></div>
|
|
244
|
+
<div class="ttc" id="classSVF_1_1Options_html_a59afe4356aae2133beb4819c013d3fbf"><div class="ttname"><a href="classSVF_1_1Options.html#a59afe4356aae2133beb4819c013d3fbf">SVF::Options::NullDummyNode</a></div><div class="ttdeci">static const llvm::cl::opt< bool > NullDummyNode</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00257">Options.h:257</a></div></div>
|
|
245
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
246
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a7117dbeceeef7a9fcaeee0a84a171590"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a7117dbeceeef7a9fcaeee0a84a171590">SVF::CFLGraphBuilder::label2KindMap</a></div><div class="ttdeci">Map< std::string, Kind > label2KindMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00048">CFLGraphBuilder.h:48</a></div></div>
|
|
247
|
+
<div class="ttc" id="classSVF_1_1NormalGepCGEdge_html_a79033645683ead9a7404cd35fd936092"><div class="ttname"><a href="classSVF_1_1NormalGepCGEdge.html#a79033645683ead9a7404cd35fd936092">SVF::NormalGepCGEdge::classof</a></div><div class="ttdeci">static bool classof(const NormalGepCGEdge *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast: </div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00277">ConsGEdge.h:277</a></div></div>
|
|
248
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a461ff21d73f60cf96a3e36672d4c6a6c"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a461ff21d73f60cf96a3e36672d4c6a6c">SVF::CFLGraphBuilder::kind2LabelMap</a></div><div class="ttdeci">Map< Kind, std::string > kind2LabelMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00049">CFLGraphBuilder.h:49</a></div></div>
|
|
249
|
+
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
250
|
+
<div class="ttc" id="classSVF_1_1CFLGraphBuilder_html_a91f1f0e8abc8d781eaf8b1a4f025c18e"><div class="ttname"><a href="classSVF_1_1CFLGraphBuilder.html#a91f1f0e8abc8d781eaf8b1a4f025c18e">SVF::CFLGraphBuilder::externMap</a></div><div class="ttdeci">bool externMap</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraphBuilder_8h_source.html#l00051">CFLGraphBuilder.h:51</a></div></div>
|
|
182
251
|
</div><!-- fragment -->
|
|
183
252
|
</div>
|
|
184
253
|
</div>
|