svf-tools 1.0.418 → 1.0.421
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/AndersenWaveDiff_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Conditions_8cpp.html +0 -1
- package/SVF-doxygen/html/html/Conditions_8cpp_source.html +58 -49
- package/SVF-doxygen/html/html/Conditions_8h.html +6 -2
- package/SVF-doxygen/html/html/Conditions_8h_source.html +68 -60
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- 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 +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +114 -113
- package/SVF-doxygen/html/html/Options_8h.html +1 -0
- package/SVF-doxygen/html/html/Options_8h_source.html +117 -115
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +41 -23
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +74 -74
- package/SVF-doxygen/html/html/PathDPItem_8h_source.html +7 -7
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +13 -13
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/annotated.html +7 -5
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +23 -25
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -0
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +2 -6
- package/SVF-doxygen/html/html/classSVF_1_1BDDExpr-members.html +92 -0
- package/SVF-doxygen/html/html/classSVF_1_1BDDExpr.html +304 -0
- package/SVF-doxygen/html/html/classSVF_1_1BDDExpr.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1BDDManager-members.html +124 -0
- package/SVF-doxygen/html/html/classSVF_1_1BDDManager.html +1139 -0
- package/SVF-doxygen/html/html/classSVF_1_1BDDManager.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondExpr-members.html +5 -8
- package/SVF-doxygen/html/html/classSVF_1_1CondExpr.html +22 -151
- package/SVF-doxygen/html/html/classSVF_1_1CondExpr.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CondManager-members.html +25 -36
- package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +276 -605
- package/SVF-doxygen/html/html/classSVF_1_1CondManager.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +103 -102
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +141 -115
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +189 -196
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1Z3Expr-members.html +95 -0
- package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +396 -0
- package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1Z3Manager-members.html +122 -0
- package/SVF-doxygen/html/html/classSVF_1_1Z3Manager.html +1066 -0
- package/SVF-doxygen/html/html/classSVF_1_1Z3Manager.png +0 -0
- package/SVF-doxygen/html/html/classes.html +12 -11
- package/SVF-doxygen/html/html/functions_0x7e.html +9 -3
- package/SVF-doxygen/html/html/functions_a.html +4 -6
- package/SVF-doxygen/html/html/functions_b.html +33 -34
- package/SVF-doxygen/html/html/functions_c.html +43 -32
- package/SVF-doxygen/html/html/functions_d.html +5 -4
- package/SVF-doxygen/html/html/functions_e.html +8 -7
- package/SVF-doxygen/html/html/functions_enum.html +3 -0
- package/SVF-doxygen/html/html/functions_eval_b.html +6 -3
- package/SVF-doxygen/html/html/functions_eval_z.html +79 -0
- package/SVF-doxygen/html/html/functions_f.html +3 -3
- package/SVF-doxygen/html/html/functions_func.html +8 -7
- package/SVF-doxygen/html/html/functions_func_0x7e.html +9 -3
- package/SVF-doxygen/html/html/functions_func_b.html +10 -10
- package/SVF-doxygen/html/html/functions_func_c.html +23 -20
- package/SVF-doxygen/html/html/functions_func_d.html +5 -4
- package/SVF-doxygen/html/html/functions_func_e.html +3 -2
- package/SVF-doxygen/html/html/functions_func_g.html +33 -24
- package/SVF-doxygen/html/html/functions_func_i.html +17 -11
- package/SVF-doxygen/html/html/functions_func_n.html +4 -3
- package/SVF-doxygen/html/html/functions_func_o.html +4 -3
- package/SVF-doxygen/html/html/functions_func_p.html +3 -3
- package/SVF-doxygen/html/html/functions_func_s.html +2 -2
- package/SVF-doxygen/html/html/functions_func_z.html +79 -0
- package/SVF-doxygen/html/html/functions_g.html +35 -26
- package/SVF-doxygen/html/html/functions_i.html +30 -15
- package/SVF-doxygen/html/html/functions_l.html +8 -8
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_n.html +4 -3
- package/SVF-doxygen/html/html/functions_o.html +9 -14
- package/SVF-doxygen/html/html/functions_p.html +10 -10
- package/SVF-doxygen/html/html/functions_r.html +7 -7
- package/SVF-doxygen/html/html/functions_rela.html +4 -0
- package/SVF-doxygen/html/html/functions_s.html +13 -15
- package/SVF-doxygen/html/html/functions_t.html +1 -3
- package/SVF-doxygen/html/html/functions_type_b.html +5 -6
- package/SVF-doxygen/html/html/functions_type_c.html +1 -1
- package/SVF-doxygen/html/html/functions_type_i.html +4 -1
- package/SVF-doxygen/html/html/functions_type_z.html +77 -0
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_a.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_b.html +6 -9
- package/SVF-doxygen/html/html/functions_vars_c.html +5 -2
- package/SVF-doxygen/html/html/functions_vars_e.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_i.html +6 -0
- package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_n.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_s.html +1 -1
- package/SVF-doxygen/html/html/functions_z.html +16 -0
- package/SVF-doxygen/html/html/hierarchy.html +436 -434
- package/SVF-doxygen/html/html/menudata.js +5 -2
- package/SVF-doxygen/html/html/namespaceSVF.html +8 -4
- package/SVF-doxygen/html/html/search/all_1.js +1 -2
- package/SVF-doxygen/html/html/search/all_10.js +11 -11
- package/SVF-doxygen/html/html/search/all_12.js +1 -1
- package/SVF-doxygen/html/html/search/all_13.js +8 -8
- package/SVF-doxygen/html/html/search/all_14.js +1 -1
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_1a.js +5 -0
- package/SVF-doxygen/html/html/search/all_1b.js +5 -3
- package/SVF-doxygen/html/html/search/all_2.js +10 -9
- package/SVF-doxygen/html/html/search/all_3.js +9 -7
- package/SVF-doxygen/html/html/search/all_4.js +3 -3
- package/SVF-doxygen/html/html/search/all_5.js +2 -2
- package/SVF-doxygen/html/html/search/all_6.js +1 -1
- package/SVF-doxygen/html/html/search/all_7.js +13 -11
- package/SVF-doxygen/html/html/search/all_9.js +8 -6
- package/SVF-doxygen/html/html/search/all_c.js +5 -5
- package/SVF-doxygen/html/html/search/all_d.js +2 -2
- package/SVF-doxygen/html/html/search/all_e.js +4 -4
- package/SVF-doxygen/html/html/search/all_f.js +2 -2
- package/SVF-doxygen/html/html/search/classes_1.js +2 -2
- package/SVF-doxygen/html/html/search/classes_14.html +26 -0
- package/SVF-doxygen/html/html/search/classes_14.js +5 -0
- package/SVF-doxygen/html/html/search/enums_1.js +1 -0
- package/SVF-doxygen/html/html/search/enumvalues_1.js +2 -1
- package/SVF-doxygen/html/html/search/enumvalues_14.html +26 -0
- package/SVF-doxygen/html/html/search/enumvalues_14.js +5 -0
- package/SVF-doxygen/html/html/search/functions_0.js +1 -1
- package/SVF-doxygen/html/html/search/functions_1.js +5 -5
- package/SVF-doxygen/html/html/search/functions_10.js +2 -2
- package/SVF-doxygen/html/html/search/functions_15.js +2 -0
- package/SVF-doxygen/html/html/search/functions_16.js +5 -3
- package/SVF-doxygen/html/html/search/functions_2.js +5 -5
- package/SVF-doxygen/html/html/search/functions_3.js +3 -3
- package/SVF-doxygen/html/html/search/functions_4.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +13 -11
- package/SVF-doxygen/html/html/search/functions_8.js +4 -4
- package/SVF-doxygen/html/html/search/functions_c.js +1 -1
- package/SVF-doxygen/html/html/search/functions_d.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +4 -4
- package/SVF-doxygen/html/html/search/related_0.js +2 -1
- package/SVF-doxygen/html/html/search/searchdata.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_1.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_16.html +26 -0
- package/SVF-doxygen/html/html/search/typedefs_16.js +4 -0
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_8.js +2 -1
- package/SVF-doxygen/html/html/search/variables_1.js +0 -1
- package/SVF-doxygen/html/html/search/variables_13.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_2.js +2 -3
- package/SVF-doxygen/html/html/search/variables_3.js +2 -1
- package/SVF-doxygen/html/html/search/variables_5.js +1 -1
- package/SVF-doxygen/html/html/search/variables_9.js +2 -0
- package/SVF-doxygen/html/html/search/variables_d.js +2 -2
- package/SVF-doxygen/html/html/search/variables_e.js +3 -3
- package/include/SABER/PathCondAllocator.h +2 -3
- package/include/Util/Conditions.h +272 -166
- package/include/Util/Options.h +4 -0
- package/index.html +2 -0
- package/lib/SABER/PathCondAllocator.cpp +3 -0
- package/lib/Util/Conditions.cpp +245 -209
- package/lib/Util/Options.cpp +11 -0
- package/lib/WPA/Andersen.cpp +10 -9
- package/package.json +1 -1
|
@@ -1111,10 +1111,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1111
1111
|
</div><div class="memdoc">
|
|
1112
1112
|
<p>Runs a <a class="el" href="classSVF_1_1Steensgaard.html">Steensgaard</a> analysis and performs clustering based on those results set the global best mapping. </p>
|
|
1113
1113
|
|
|
1114
|
-
<p class="definition">Definition at line <a class="el" href="Andersen_8cpp_source.html#
|
|
1115
|
-
<div class="fragment"><div class="line"><a name="
|
|
1114
|
+
<p class="definition">Definition at line <a class="el" href="Andersen_8cpp_source.html#l00838">838</a> of file <a class="el" href="Andersen_8cpp_source.html">Andersen.cpp</a>.</p>
|
|
1115
|
+
<div class="fragment"><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> {</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a> == 0 && <span class="stringliteral">"Andersen::cluster: clustering for Andersen's is currently only supported in field-insesnsitive analysis"</span>);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <a class="code" href="classSVF_1_1Steensgaard.html">Steensgaard</a> *steens = <a class="code" href="classSVF_1_1Steensgaard.html#acd5f31c3b1f9b47def458637f8e9389e">Steensgaard::createSteensgaard</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  std::vector<std::pair<unsigned, unsigned>> keys;</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> pit = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); pit != <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++pit)</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  keys.push_back(std::make_pair(pit->first, 1));</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  }</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> </div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  std::vector<std::pair<hclust_fast_methods, std::vector<NodeID>>> candidates;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> nodeMapping =</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  std::make_shared<std::vector<NodeID>>(<a class="code" href="classSVF_1_1NodeIDAllocator_1_1Clusterer.html#a33d502a0bd49307cd824e34b73157b9b">NodeIDAllocator::Clusterer::cluster</a>(steens, keys, candidates, <span class="stringliteral">"aux-steens"</span>));</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <a class="code" href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">PointsTo::MappingPtr</a> reverseNodeMapping =</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  std::make_shared<std::vector<NodeID>>(<a class="code" href="classSVF_1_1NodeIDAllocator_1_1Clusterer.html#a36b25188130f4c21d145c950a70d616f">NodeIDAllocator::Clusterer::getReverseNodeMapping</a>(*nodeMapping));</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> </div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <a class="code" href="classSVF_1_1PointsTo.html#a84eca4c7fc833f8ca4d119cd4da08ca8">PointsTo::setCurrentBestNodeMapping</a>(nodeMapping, reverseNodeMapping);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
|
|
1116
1116
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1117
|
-
<div class="ttc" id="classSVF_1_1Options_html_adfc1a5c6098d3867e29fc65ca9ffa1cc"><div class="ttname"><a href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const llvm::cl::opt< unsigned > MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
1117
|
+
<div class="ttc" id="classSVF_1_1Options_html_adfc1a5c6098d3867e29fc65ca9ffa1cc"><div class="ttname"><a href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const llvm::cl::opt< unsigned > MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00038">Options.h:38</a></div></div>
|
|
1118
1118
|
<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#l00365">GenericGraph.h:365</a></div></div>
|
|
1119
1119
|
<div class="ttc" id="classSVF_1_1PointsTo_html_a849f670b38cb6f65fc23707a212591c7"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a849f670b38cb6f65fc23707a212591c7">SVF::PointsTo::MappingPtr</a></div><div class="ttdeci">std::shared_ptr< std::vector< NodeID > > MappingPtr</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00041">PointsTo.h:41</a></div></div>
|
|
1120
1120
|
<div class="ttc" id="classSVF_1_1Steensgaard_html_acd5f31c3b1f9b47def458637f8e9389e"><div class="ttname"><a href="classSVF_1_1Steensgaard.html#acd5f31c3b1f9b47def458637f8e9389e">SVF::Steensgaard::createSteensgaard</a></div><div class="ttdeci">static Steensgaard * createSteensgaard(SVFIR *_pag)</div><div class="ttdoc">Create an singleton instance. </div><div class="ttdef"><b>Definition:</b> <a href="Steensgaard_8h_source.html#l00035">Steensgaard.h:35</a></div></div>
|
|
@@ -1167,7 +1167,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1167
1167
|
<div class="ttc" id="classSVF_1_1ConstraintGraph_html_a39b973543acdcdc5493832cc9d0f586f"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f">SVF::ConstraintGraph::sccRepNode</a></div><div class="ttdeci">NodeID sccRepNode(NodeID id) const</div><div class="ttdoc">SCC rep/sub nodes methods. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00232">ConsG.h:232</a></div></div>
|
|
1168
1168
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00178">SVFBasicTypes.h:178</a></div></div>
|
|
1169
1169
|
<div class="ttc" id="classSVF_1_1Andersen_html_a3f0048155f0b3a6899dac6f30553aa9e"><div class="ttname"><a href="classSVF_1_1Andersen.html#a3f0048155f0b3a6899dac6f30553aa9e">SVF::Andersen::collapseNodePts</a></div><div class="ttdeci">bool collapseNodePts(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00523">Andersen.cpp:523</a></div></div>
|
|
1170
|
-
<div class="ttc" id="classSVF_1_1Andersen_html_a36729160041bc3a3e2b0a92b29062848"><div class="ttname"><a href="classSVF_1_1Andersen.html#a36729160041bc3a3e2b0a92b29062848">SVF::Andersen::mergeNodeToRep</a></div><div class="ttdeci">virtual void mergeNodeToRep(NodeID nodeId, NodeID newRepId)</div><div class="ttdoc">Merge sub node to its rep. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#
|
|
1170
|
+
<div class="ttc" id="classSVF_1_1Andersen_html_a36729160041bc3a3e2b0a92b29062848"><div class="ttname"><a href="classSVF_1_1Andersen.html#a36729160041bc3a3e2b0a92b29062848">SVF::Andersen::mergeNodeToRep</a></div><div class="ttdeci">virtual void mergeNodeToRep(NodeID nodeId, NodeID newRepId)</div><div class="ttdoc">Merge sub node to its rep. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00810">Andersen.cpp:810</a></div></div>
|
|
1171
1171
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a58113943e4e7144d94d26991dcc8bcc7"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a58113943e4e7144d94d26991dcc8bcc7">SVF::BVDataPTAImpl::getRevPts</a></div><div class="ttdeci">virtual const NodeSet & getRevPts(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00103">PointerAnalysisImpl.h:103</a></div></div>
|
|
1172
1172
|
<div class="ttc" id="classSVF_1_1ConstraintGraph_html_a7c8a29ad1d270fca745f233bb4800731"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a7c8a29ad1d270fca745f233bb4800731">SVF::ConstraintGraph::getFIObjVar</a></div><div class="ttdeci">NodeID getFIObjVar(NodeID id)</div><div class="ttdoc">Get a field-insensitive node of a memory object. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00336">ConsG.h:336</a></div></div>
|
|
1173
1173
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00088">SVFBasicTypes.h:88</a></div></div>
|
|
@@ -1432,8 +1432,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1432
1432
|
|
|
1433
1433
|
<p>Reimplemented from <a class="el" href="classSVF_1_1BVDataPTAImpl.html#a8d6cea841b6ded0f80ef2b5784e9b752">SVF::BVDataPTAImpl</a>.</p>
|
|
1434
1434
|
|
|
1435
|
-
<p class="definition">Definition at line <a class="el" href="Andersen_8cpp_source.html#
|
|
1436
|
-
<div class="fragment"><div class="line"><a name="
|
|
1435
|
+
<p class="definition">Definition at line <a class="el" href="Andersen_8cpp_source.html#l00860">860</a> of file <a class="el" href="Andersen_8cpp_source.html">Andersen.cpp</a>.</p>
|
|
1436
|
+
<div class="fragment"><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> {</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keywordflow">for</span> (OrderedNodeSet::iterator nIter = this-><a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>().begin();</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  nIter != this-><a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>().end(); ++nIter)</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  {</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(*nIter);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()->isValidTopLevelPtr(node))</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  {</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& pts = this-><a class="code" href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639">getPts</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\nNodeID "</span> << node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> </div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  {</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\t\tPointsTo: {empty}\n\n"</span>;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  }</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  {</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\t\tPointsTo: { "</span>;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> </div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  multiset<u32_t> line;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> it = pts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), eit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  it != eit; ++it)</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  {</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  line.insert(*it);</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  }</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <span class="keywordflow">for</span> (multiset<u32_t>::const_iterator it = line.begin(); it != line.end(); ++it)</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << *it << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"}\n\n"</span>;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  }</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  }</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  }</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> </div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>().flush();</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span> }</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a60b111647e000cc983aa52513f90afbc"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">SVF::PointerAnalysis::getAllValidPtrs</a></div><div class="ttdeci">OrderedNodeSet & getAllValidPtrs()</div><div class="ttdoc">Get all Valid Pointers for resolution. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00222">PointerAnalysis.h:222</a></div></div>
|
|
1437
1437
|
<div class="ttc" id="classSVF_1_1Andersen_html_a187285a5bdf9422d9188b2b11b667639"><div class="ttname"><a href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639">SVF::Andersen::getPts</a></div><div class="ttdeci">virtual const PointsTo & getPts(NodeID id)</div><div class="ttdoc">Operation of points-to set. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00216">Andersen.h:216</a></div></div>
|
|
1438
1438
|
<div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00174">PointsTo.h:174</a></div></div>
|
|
1439
1439
|
<div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
|
|
@@ -1513,7 +1513,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1513
1513
|
<div class="ttc" id="classSVF_1_1NodeIDAllocator_1_1Clusterer_html_ac10cbda6a84ce890c9946a5ff35800b7"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator_1_1Clusterer.html#ac10cbda6a84ce890c9946a5ff35800b7">SVF::NodeIDAllocator::Clusterer::printStats</a></div><div class="ttdeci">static void printStats(std::string title, Map< std::string, std::string > &stats)</div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00691">NodeIDAllocator.cpp:691</a></div></div>
|
|
1514
1514
|
<div class="ttc" id="classSVF_1_1PointsTo_html_a6c1885ddfcc72604463f7c4ea94d2f74"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a6c1885ddfcc72604463f7c4ea94d2f74">SVF::PointsTo::getCurrentBestNodeMapping</a></div><div class="ttdeci">static MappingPtr getCurrentBestNodeMapping(void)</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00345">PointsTo.cpp:345</a></div></div>
|
|
1515
1515
|
<div class="ttc" id="classSVF_1_1AndersenBase_html_a28a1c3571cdee5e05004b29ace364e67"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">SVF::AndersenBase::finalize</a></div><div class="ttdeci">virtual void finalize() override</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00088">Andersen.cpp:88</a></div></div>
|
|
1516
|
-
<div class="ttc" id="classSVF_1_1Options_html_a8459d43a21bcf8a50fc55d14fcf5a81e"><div class="ttname"><a href="classSVF_1_1Options.html#a8459d43a21bcf8a50fc55d14fcf5a81e">SVF::Options::ClusterAnder</a></div><div class="ttdeci">static const llvm::cl::opt< bool > ClusterAnder</div><div class="ttdoc">Whether to stage Andersen&#39;s with Steensgaard and cluster based on that data. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
1516
|
+
<div class="ttc" id="classSVF_1_1Options_html_a8459d43a21bcf8a50fc55d14fcf5a81e"><div class="ttname"><a href="classSVF_1_1Options.html#a8459d43a21bcf8a50fc55d14fcf5a81e">SVF::Options::ClusterAnder</a></div><div class="ttdeci">static const llvm::cl::opt< bool > ClusterAnder</div><div class="ttdoc">Whether to stage Andersen&#39;s with Steensgaard and cluster based on that data. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00041">Options.h:41</a></div></div>
|
|
1517
1517
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_acfdb43f20bbcababc928cc4df93a8483"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#acfdb43f20bbcababc928cc4df93a8483">SVF::BVDataPTAImpl::PTDataTy</a></div><div class="ttdeci">PTData< NodeID, NodeSet, NodeID, PointsTo > PTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00046">PointerAnalysisImpl.h:46</a></div></div>
|
|
1518
1518
|
</div><!-- fragment -->
|
|
1519
1519
|
</div>
|
|
@@ -1767,10 +1767,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1767
1767
|
<div class="fragment"><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_1Andersen.html#a95c0b2f501dff61993cd43a5cab89e17">resetData</a>();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="classSVF_1_1Andersen.html#a69161671030b51c5a6cf139325aa098f">setDiffOpt</a>(<a class="code" href="classSVF_1_1Options.html#acf7262c0b0bd91e6dab56a631be51206">Options::PtsDiff</a>);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="classSVF_1_1Andersen.html#a2b13f14db90ad59a61dff097bcdf8fb7">setPWCOpt</a>(<a class="code" href="classSVF_1_1Options.html#a69579e2f37962afdbb292a36782511ed">Options::MergePWC</a>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">AndersenBase::initialize</a>();</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>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8459d43a21bcf8a50fc55d14fcf5a81e">Options::ClusterAnder</a>) <a class="code" href="classSVF_1_1Andersen.html#ae1ff65a411f2c4dfee0973ad4af48daf">cluster</a>();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="classSVF_1_1Andersen.html#adccf6acf63abc9cafc92b2148396fd10">processAllAddr</a>();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div><div class="ttc" id="classSVF_1_1AndersenBase_html_a891816407a4c6346f56bc01a67b78aac"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">SVF::AndersenBase::initialize</a></div><div class="ttdeci">virtual void initialize() override</div><div class="ttdoc">Initialize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00072">Andersen.cpp:72</a></div></div>
|
|
1768
1768
|
<div class="ttc" id="classSVF_1_1Andersen_html_a95c0b2f501dff61993cd43a5cab89e17"><div class="ttname"><a href="classSVF_1_1Andersen.html#a95c0b2f501dff61993cd43a5cab89e17">SVF::Andersen::resetData</a></div><div class="ttdeci">void resetData()</div><div class="ttdoc">Reset data. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00176">Andersen.h:176</a></div></div>
|
|
1769
1769
|
<div class="ttc" id="classSVF_1_1Andersen_html_a2b13f14db90ad59a61dff097bcdf8fb7"><div class="ttname"><a href="classSVF_1_1Andersen.html#a2b13f14db90ad59a61dff097bcdf8fb7">SVF::Andersen::setPWCOpt</a></div><div class="ttdeci">void setPWCOpt(bool flag)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00235">Andersen.h:235</a></div></div>
|
|
1770
|
-
<div class="ttc" id="classSVF_1_1Andersen_html_ae1ff65a411f2c4dfee0973ad4af48daf"><div class="ttname"><a href="classSVF_1_1Andersen.html#ae1ff65a411f2c4dfee0973ad4af48daf">SVF::Andersen::cluster</a></div><div class="ttdeci">virtual void cluster(void) const</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#
|
|
1771
|
-
<div class="ttc" id="classSVF_1_1Options_html_a69579e2f37962afdbb292a36782511ed"><div class="ttname"><a href="classSVF_1_1Options.html#a69579e2f37962afdbb292a36782511ed">SVF::Options::MergePWC</a></div><div class="ttdeci">static const llvm::cl::opt< bool > MergePWC</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
1772
|
-
<div class="ttc" id="classSVF_1_1Options_html_a8459d43a21bcf8a50fc55d14fcf5a81e"><div class="ttname"><a href="classSVF_1_1Options.html#a8459d43a21bcf8a50fc55d14fcf5a81e">SVF::Options::ClusterAnder</a></div><div class="ttdeci">static const llvm::cl::opt< bool > ClusterAnder</div><div class="ttdoc">Whether to stage Andersen&#39;s with Steensgaard and cluster based on that data. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
1773
|
-
<div class="ttc" id="classSVF_1_1Options_html_acf7262c0b0bd91e6dab56a631be51206"><div class="ttname"><a href="classSVF_1_1Options.html#acf7262c0b0bd91e6dab56a631be51206">SVF::Options::PtsDiff</a></div><div class="ttdeci">static const llvm::cl::opt< bool > PtsDiff</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
1770
|
+
<div class="ttc" id="classSVF_1_1Andersen_html_ae1ff65a411f2c4dfee0973ad4af48daf"><div class="ttname"><a href="classSVF_1_1Andersen.html#ae1ff65a411f2c4dfee0973ad4af48daf">SVF::Andersen::cluster</a></div><div class="ttdeci">virtual void cluster(void) const</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00838">Andersen.cpp:838</a></div></div>
|
|
1771
|
+
<div class="ttc" id="classSVF_1_1Options_html_a69579e2f37962afdbb292a36782511ed"><div class="ttname"><a href="classSVF_1_1Options.html#a69579e2f37962afdbb292a36782511ed">SVF::Options::MergePWC</a></div><div class="ttdeci">static const llvm::cl::opt< bool > MergePWC</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00236">Options.h:236</a></div></div>
|
|
1772
|
+
<div class="ttc" id="classSVF_1_1Options_html_a8459d43a21bcf8a50fc55d14fcf5a81e"><div class="ttname"><a href="classSVF_1_1Options.html#a8459d43a21bcf8a50fc55d14fcf5a81e">SVF::Options::ClusterAnder</a></div><div class="ttdeci">static const llvm::cl::opt< bool > ClusterAnder</div><div class="ttdoc">Whether to stage Andersen&#39;s with Steensgaard and cluster based on that data. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00041">Options.h:41</a></div></div>
|
|
1773
|
+
<div class="ttc" id="classSVF_1_1Options_html_acf7262c0b0bd91e6dab56a631be51206"><div class="ttname"><a href="classSVF_1_1Options.html#acf7262c0b0bd91e6dab56a631be51206">SVF::Options::PtsDiff</a></div><div class="ttdeci">static const llvm::cl::opt< bool > PtsDiff</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00235">Options.h:235</a></div></div>
|
|
1774
1774
|
<div class="ttc" id="classSVF_1_1Andersen_html_adccf6acf63abc9cafc92b2148396fd10"><div class="ttname"><a href="classSVF_1_1Andersen.html#adccf6acf63abc9cafc92b2148396fd10">SVF::Andersen::processAllAddr</a></div><div class="ttdeci">void processAllAddr()</div><div class="ttdoc">handling various constraints </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00291">Andersen.cpp:291</a></div></div>
|
|
1775
1775
|
<div class="ttc" id="classSVF_1_1Andersen_html_a69161671030b51c5a6cf139325aa098f"><div class="ttname"><a href="classSVF_1_1Andersen.html#a69161671030b51c5a6cf139325aa098f">SVF::Andersen::setDiffOpt</a></div><div class="ttdeci">void setDiffOpt(bool flag)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00249">Andersen.h:249</a></div></div>
|
|
1776
1776
|
</div><!-- fragment -->
|
|
@@ -1886,18 +1886,11 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1886
1886
|
</div><div class="memdoc">
|
|
1887
1887
|
|
|
1888
1888
|
<p>Merge sub node to its rep. </p>
|
|
1889
|
-
<ol type="1">
|
|
1890
|
-
<li>if find gep edges inside SCC cycle, the rep node will become a PWC node and its pts should be collapsed later.</li>
|
|
1891
|
-
<li>if the node to be merged is already a PWC node, the rep node will also become a PWC node as it will have a self-cycle gep edge. </li>
|
|
1892
|
-
</ol>
|
|
1893
1889
|
|
|
1894
1890
|
<p>Reimplemented in <a class="el" href="classSVF_1_1AndersenWaveDiff.html#acdc82c72b14e012551a460fa91a634db">SVF::AndersenWaveDiff</a>.</p>
|
|
1895
1891
|
|
|
1896
|
-
<p class="definition">Definition at line <a class="el" href="Andersen_8cpp_source.html#
|
|
1897
|
-
<div class="fragment"><div class="line"><a name="
|
|
1898
|
-
<div class="ttc" id="classSVF_1_1ConstraintNode_html_a0ffe4f1ca1a6f70466cc1c6b3b12c90d"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a0ffe4f1ca1a6f70466cc1c6b3b12c90d">SVF::ConstraintNode::isPWCNode</a></div><div class="ttdeci">bool isPWCNode() const</div><div class="ttdoc">Whether a node involves in PWC, if so, all its points-to elements should become field-insensitive. </div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00094">ConsGNode.h:94</a></div></div>
|
|
1899
|
-
<div class="ttc" id="classSVF_1_1ConstraintNode_html"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html">SVF::ConstraintNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00040">ConsGNode.h:40</a></div></div>
|
|
1900
|
-
<div class="ttc" id="classSVF_1_1Andersen_html_ae6b1e54a389abc68994219e39539127e"><div class="ttname"><a href="classSVF_1_1Andersen.html#ae6b1e54a389abc68994219e39539127e">SVF::Andersen::mergeSrcToTgt</a></div><div class="ttdeci">virtual bool mergeSrcToTgt(NodeID srcId, NodeID tgtId)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00779">Andersen.cpp:779</a></div></div>
|
|
1892
|
+
<p class="definition">Definition at line <a class="el" href="Andersen_8cpp_source.html#l00810">810</a> of file <a class="el" href="Andersen_8cpp_source.html">Andersen.cpp</a>.</p>
|
|
1893
|
+
<div class="fragment"><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> {</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> </div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Andersen.html#ae6b1e54a389abc68994219e39539127e">mergeSrcToTgt</a>(nodeId,newRepId))</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#a03f9fe8ae7094c39937f47f422276724">setPWCNode</a>(newRepId);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> }</div><div class="ttc" id="classSVF_1_1Andersen_html_ae6b1e54a389abc68994219e39539127e"><div class="ttname"><a href="classSVF_1_1Andersen.html#ae6b1e54a389abc68994219e39539127e">SVF::Andersen::mergeSrcToTgt</a></div><div class="ttdeci">virtual bool mergeSrcToTgt(NodeID srcId, NodeID tgtId)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00779">Andersen.cpp:779</a></div></div>
|
|
1901
1894
|
<div class="ttc" id="classSVF_1_1AndersenBase_html_ae21e38a06a4397d11cdd17b0f8f282fd"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">SVF::AndersenBase::consCG</a></div><div class="ttdeci">ConstraintGraph * consCG</div><div class="ttdoc">Constraint Graph. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00143">Andersen.h:143</a></div></div>
|
|
1902
1895
|
<div class="ttc" id="classSVF_1_1ConstraintGraph_html_a03f9fe8ae7094c39937f47f422276724"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a03f9fe8ae7094c39937f47f422276724">SVF::ConstraintGraph::setPWCNode</a></div><div class="ttdeci">void setPWCNode(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00352">ConsG.h:352</a></div></div>
|
|
1903
1896
|
</div><!-- fragment -->
|
|
@@ -2004,7 +1997,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2004
1997
|
|
|
2005
1998
|
<p class="definition">Definition at line <a class="el" href="Andersen_8cpp_source.html#l00508">508</a> of file <a class="el" href="Andersen_8cpp_source.html">Andersen.cpp</a>.</p>
|
|
2006
1999
|
<div class="fragment"><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">for</span> (NodeBS::iterator nodeIt = subNodes.begin(); nodeIt != subNodes.end(); nodeIt++)</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> subNodeId = *nodeIt;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">if</span> (subNodeId != repNodeId)</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <a class="code" href="classSVF_1_1Andersen.html#a36729160041bc3a3e2b0a92b29062848">mergeNodeToRep</a>(subNodeId, repNodeId);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> }</div><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#l00018">MTAResultValidator.h:18</a></div></div>
|
|
2007
|
-
<div class="ttc" id="classSVF_1_1Andersen_html_a36729160041bc3a3e2b0a92b29062848"><div class="ttname"><a href="classSVF_1_1Andersen.html#a36729160041bc3a3e2b0a92b29062848">SVF::Andersen::mergeNodeToRep</a></div><div class="ttdeci">virtual void mergeNodeToRep(NodeID nodeId, NodeID newRepId)</div><div class="ttdoc">Merge sub node to its rep. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#
|
|
2000
|
+
<div class="ttc" id="classSVF_1_1Andersen_html_a36729160041bc3a3e2b0a92b29062848"><div class="ttname"><a href="classSVF_1_1Andersen.html#a36729160041bc3a3e2b0a92b29062848">SVF::Andersen::mergeNodeToRep</a></div><div class="ttdeci">virtual void mergeNodeToRep(NodeID nodeId, NodeID newRepId)</div><div class="ttdoc">Merge sub node to its rep. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00810">Andersen.cpp:810</a></div></div>
|
|
2008
2001
|
</div><!-- fragment -->
|
|
2009
2002
|
</div>
|
|
2010
2003
|
</div>
|
|
@@ -2044,16 +2037,21 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2044
2037
|
<p>merge nodeId to newRepId. Return true if the newRepId is a PWC node </p>
|
|
2045
2038
|
<p>union pts of node to rep</p>
|
|
2046
2039
|
<p>move the edges from node to rep, and remove the node</p>
|
|
2040
|
+
<ol type="1">
|
|
2041
|
+
<li>if find gep edges inside SCC cycle, the rep node will become a PWC node and its pts should be collapsed later.</li>
|
|
2042
|
+
<li>if the node to be merged is already a PWC node, the rep node will also become a PWC node as it will have a self-cycle gep edge.</li>
|
|
2043
|
+
</ol>
|
|
2047
2044
|
<p>set rep and sub relations </p>
|
|
2048
2045
|
|
|
2049
2046
|
<p>Reimplemented in <a class="el" href="classSVF_1_1AndersenHLCD.html#a59da289c87f9ab815a15e0a745bdc31f">SVF::AndersenHLCD</a>, <a class="el" href="classSVF_1_1AndersenLCD.html#ac78efb1e4246c06c64dad1d368ed032d">SVF::AndersenLCD</a>, and <a class="el" href="classSVF_1_1AndersenSFR.html#ac5f406db5610347564fceff4d36f6a6f">SVF::AndersenSFR</a>.</p>
|
|
2050
2047
|
|
|
2051
2048
|
<p class="definition">Definition at line <a class="el" href="Andersen_8cpp_source.html#l00779">779</a> of file <a class="el" href="Andersen_8cpp_source.html">Andersen.cpp</a>.</p>
|
|
2052
|
-
<div class="fragment"><div class="line"><a name="l00780"></a><span class="lineno"> 780</span> {</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span> </div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="keywordflow">if</span>(nodeId==newRepId)</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> </div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <a class="code" href="classSVF_1_1Andersen.html#a4baa6fc95d52afa370fc0fabffd42018">updatePropaPts</a>(newRepId, nodeId);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <a class="code" href="classSVF_1_1Andersen.html#ab7dadfd4d810be4863f03ed996b3b3c4">unionPts</a>(newRepId,nodeId);</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span> </div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(nodeId);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keywordtype">bool</span>
|
|
2049
|
+
<div class="fragment"><div class="line"><a name="l00780"></a><span class="lineno"> 780</span> {</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span> </div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="keywordflow">if</span>(nodeId==newRepId)</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> </div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <a class="code" href="classSVF_1_1Andersen.html#a4baa6fc95d52afa370fc0fabffd42018">updatePropaPts</a>(newRepId, nodeId);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <a class="code" href="classSVF_1_1Andersen.html#ab7dadfd4d810be4863f03ed996b3b3c4">unionPts</a>(newRepId,nodeId);</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span> </div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(nodeId);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keywordtype">bool</span> pwc = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#aabe2861fcbc364e2c8aa8114d4879c39">moveEdgesToRepNode</a>(node, <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(newRepId));</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> </div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordflow">if</span>(node-><a class="code" href="classSVF_1_1ConstraintNode.html#a0ffe4f1ca1a6f70466cc1c6b3b12c90d">isPWCNode</a>())</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  pwc = <span class="keyword">true</span>;</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> </div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <a class="code" href="classSVF_1_1Andersen.html#acd54e3edace1f41511c8f0a6a68dac18">updateNodeRepAndSubs</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),newRepId);</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> </div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#a9e21bc9b86080b4059f0907e9a7b33f3">removeConstraintNode</a>(node);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> </div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">return</span> pwc;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> }</div><div class="ttc" id="classSVF_1_1ConstraintGraph_html_a26722666cc8f2fce61bed73f086a0e87"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">SVF::ConstraintGraph::getConstraintNode</a></div><div class="ttdeci">ConstraintNode * getConstraintNode(NodeID id) const</div><div class="ttdoc">Get/add/remove constraint node. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00107">ConsG.h:107</a></div></div>
|
|
2053
2050
|
<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#l00220">Andersen.h:220</a></div></div>
|
|
2054
2051
|
<div class="ttc" id="classSVF_1_1ConstraintGraph_html_aabe2861fcbc364e2c8aa8114d4879c39"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aabe2861fcbc364e2c8aa8114d4879c39">SVF::ConstraintGraph::moveEdgesToRepNode</a></div><div class="ttdeci">bool moveEdgesToRepNode(ConstraintNode *node, ConstraintNode *rep)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00283">ConsG.h:283</a></div></div>
|
|
2055
|
-
<div class="ttc" id="classSVF_1_1Andersen_html_acd54e3edace1f41511c8f0a6a68dac18"><div class="ttname"><a href="classSVF_1_1Andersen.html#acd54e3edace1f41511c8f0a6a68dac18">SVF::Andersen::updateNodeRepAndSubs</a></div><div class="ttdeci">void updateNodeRepAndSubs(NodeID nodeId, NodeID newRepId)</div><div class="ttdoc">Updates subnodes of its rep, and rep node of its subs. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#
|
|
2052
|
+
<div class="ttc" id="classSVF_1_1Andersen_html_acd54e3edace1f41511c8f0a6a68dac18"><div class="ttname"><a href="classSVF_1_1Andersen.html#acd54e3edace1f41511c8f0a6a68dac18">SVF::Andersen::updateNodeRepAndSubs</a></div><div class="ttdeci">void updateNodeRepAndSubs(NodeID nodeId, NodeID newRepId)</div><div class="ttdoc">Updates subnodes of its rep, and rep node of its subs. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00820">Andersen.cpp:820</a></div></div>
|
|
2056
2053
|
<div class="ttc" id="classSVF_1_1Andersen_html_a4baa6fc95d52afa370fc0fabffd42018"><div class="ttname"><a href="classSVF_1_1Andersen.html#a4baa6fc95d52afa370fc0fabffd42018">SVF::Andersen::updatePropaPts</a></div><div class="ttdeci">void updatePropaPts(NodeID dstId, NodeID srcId)</div><div class="ttdoc">Handle propagated points-to set. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00286">Andersen.h:286</a></div></div>
|
|
2054
|
+
<div class="ttc" id="classSVF_1_1ConstraintNode_html_a0ffe4f1ca1a6f70466cc1c6b3b12c90d"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a0ffe4f1ca1a6f70466cc1c6b3b12c90d">SVF::ConstraintNode::isPWCNode</a></div><div class="ttdeci">bool isPWCNode() const</div><div class="ttdoc">Whether a node involves in PWC, if so, all its points-to elements should become field-insensitive. </div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00094">ConsGNode.h:94</a></div></div>
|
|
2057
2055
|
<div class="ttc" id="classSVF_1_1ConstraintNode_html"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html">SVF::ConstraintNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00040">ConsGNode.h:40</a></div></div>
|
|
2058
2056
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00165">GenericGraph.h:165</a></div></div>
|
|
2059
2057
|
<div class="ttc" id="classSVF_1_1AndersenBase_html_ae21e38a06a4397d11cdd17b0f8f282fd"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">SVF::AndersenBase::consCG</a></div><div class="ttdeci">ConstraintGraph * consCG</div><div class="ttdoc">Constraint Graph. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00143">Andersen.h:143</a></div></div>
|
|
@@ -2902,8 +2900,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2902
2900
|
<p>Updates subnodes of its rep, and rep node of its subs. </p>
|
|
2903
2901
|
<p>update nodeToRepMap, for each subs of current node updates its rep to newRepId </p>
|
|
2904
2902
|
|
|
2905
|
-
<p class="definition">Definition at line <a class="el" href="Andersen_8cpp_source.html#
|
|
2906
|
-
<div class="fragment"><div class="line"><a name="
|
|
2903
|
+
<p class="definition">Definition at line <a class="el" href="Andersen_8cpp_source.html#l00820">820</a> of file <a class="el" href="Andersen_8cpp_source.html">Andersen.cpp</a>.</p>
|
|
2904
|
+
<div class="fragment"><div class="line"><a name="l00821"></a><span class="lineno"> 821</span> {</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#abea65bf6dd43aa312082f8d4c7c3e3cb">setRep</a>(nodeId,newRepId);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> repSubs;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  repSubs.set(nodeId);</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="comment">// update nodeToSubsMap, union its subs with its rep Subs</span></div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>& nodeSubs = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#aed605b010e313f4b11e95b83fe50e3b3">sccSubNodes</a>(nodeId);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="keywordflow">for</span>(NodeBS::iterator sit = nodeSubs.begin(), esit = nodeSubs.end(); sit!=esit; ++sit)</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  {</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> subId = *sit;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#abea65bf6dd43aa312082f8d4c7c3e3cb">setRep</a>(subId,newRepId);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  }</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  repSubs |= nodeSubs;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#a148235bd1355a700d3ce187702e89bc8">setSubs</a>(newRepId,repSubs);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#a5fe3815a7990e16b99cf46e90529f8b3">resetSubs</a>(nodeId);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> }</div><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#l00018">MTAResultValidator.h:18</a></div></div>
|
|
2907
2905
|
<div class="ttc" id="classSVF_1_1ConstraintGraph_html_aed605b010e313f4b11e95b83fe50e3b3"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aed605b010e313f4b11e95b83fe50e3b3">SVF::ConstraintGraph::sccSubNodes</a></div><div class="ttdeci">NodeBS & sccSubNodes(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00240">ConsG.h:240</a></div></div>
|
|
2908
2906
|
<div class="ttc" id="classSVF_1_1ConstraintGraph_html_a148235bd1355a700d3ce187702e89bc8"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a148235bd1355a700d3ce187702e89bc8">SVF::ConstraintGraph::setSubs</a></div><div class="ttdeci">void setSubs(NodeID node, NodeBS &subs)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00249">ConsG.h:249</a></div></div>
|
|
2909
2907
|
<div class="ttc" id="classSVF_1_1ConstraintGraph_html_abea65bf6dd43aa312082f8d4c7c3e3cb"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#abea65bf6dd43aa312082f8d4c7c3e3cb">SVF::ConstraintGraph::setRep</a></div><div class="ttdeci">void setRep(NodeID node, NodeID rep)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00245">ConsG.h:245</a></div></div>
|
|
@@ -805,14 +805,14 @@ Additional Inherited Members</h2></td></tr>
|
|
|
805
805
|
<div class="ttc" id="classSVF_1_1AndersenBase_html_ac05796a5672ddb5bd0e08924d79da065"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#ac05796a5672ddb5bd0e08924d79da065">SVF::AndersenBase::updateCallGraph</a></div><div class="ttdeci">virtual bool updateCallGraph(const CallSiteToFunPtrMap &) override</div><div class="ttdoc">Implement it in child class to update call graph. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00074">Andersen.h:74</a></div></div>
|
|
806
806
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a118dabc50024b5cd91095814ade47166"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">SVF::PointerAnalysis::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalization of a pointer analysis, including checking alias correctness. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00200">PointerAnalysis.cpp:200</a></div></div>
|
|
807
807
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a757815a2c758695176120509ceb0ce70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a757815a2c758695176120509ceb0ce70">SVF::SVFUtil::startAnalysisLimitTimer</a></div><div class="ttdeci">bool startAnalysisLimitTimer(unsigned timeLimit)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00424">SVFUtil.cpp:424</a></div></div>
|
|
808
|
-
<div class="ttc" id="classSVF_1_1Options_html_a98a521e5c99c5248eae8f8234453b116"><div class="ttname"><a href="classSVF_1_1Options.html#a98a521e5c99c5248eae8f8234453b116">SVF::Options::ReadAnder</a></div><div class="ttdeci">static const llvm::cl::opt< std ::string > ReadAnder</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
808
|
+
<div class="ttc" id="classSVF_1_1Options_html_a98a521e5c99c5248eae8f8234453b116"><div class="ttname"><a href="classSVF_1_1Options.html#a98a521e5c99c5248eae8f8234453b116">SVF::Options::ReadAnder</a></div><div class="ttdeci">static const llvm::cl::opt< std ::string > ReadAnder</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00234">Options.h:234</a></div></div>
|
|
809
809
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
810
810
|
<div class="ttc" id="classSVF_1_1AndersenBase_html_a28a1c3571cdee5e05004b29ace364e67"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">SVF::AndersenBase::finalize</a></div><div class="ttdeci">virtual void finalize() override</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00088">Andersen.cpp:88</a></div></div>
|
|
811
|
-
<div class="ttc" id="classSVF_1_1Options_html_a4c7eb57066c80c62ef394d644833214a"><div class="ttname"><a href="classSVF_1_1Options.html#a4c7eb57066c80c62ef394d644833214a">SVF::Options::WriteAnder</a></div><div class="ttdeci">static const llvm::cl::opt< std ::string > WriteAnder</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
811
|
+
<div class="ttc" id="classSVF_1_1Options_html_a4c7eb57066c80c62ef394d644833214a"><div class="ttname"><a href="classSVF_1_1Options.html#a4c7eb57066c80c62ef394d644833214a">SVF::Options::WriteAnder</a></div><div class="ttdeci">static const llvm::cl::opt< std ::string > WriteAnder</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00232">Options.h:232</a></div></div>
|
|
812
812
|
<div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_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="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
|
|
813
813
|
<div class="ttc" id="classSVF_1_1AndersenBase_html_a566830d0c7a1f5cd967bb8f2ab168f8d"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a566830d0c7a1f5cd967bb8f2ab168f8d">SVF::AndersenBase::printStat</a></div><div class="ttdeci">void printStat()</div><div class="ttdoc">dump statistics </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00108">Andersen.h:108</a></div></div>
|
|
814
814
|
<div class="ttc" id="classSVF_1_1WPASolver_html_a7195381c3aab04890139b4fe2c561909"><div class="ttname"><a href="classSVF_1_1WPASolver.html#a7195381c3aab04890139b4fe2c561909">SVF::WPASolver::initWorklist</a></div><div class="ttdeci">virtual void initWorklist()</div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00101">WPASolver.h:101</a></div></div>
|
|
815
|
-
<div class="ttc" id="classSVF_1_1Options_html_a620fe156ba70f997eace0ccb0d2c9f67"><div class="ttname"><a href="classSVF_1_1Options.html#a620fe156ba70f997eace0ccb0d2c9f67">SVF::Options::AnderTimeLimit</a></div><div class="ttdeci">static const llvm::cl::opt< unsigned > AnderTimeLimit</div><div class="ttdoc">Time limit for the Andersen&#39;s analyses. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
815
|
+
<div class="ttc" id="classSVF_1_1Options_html_a620fe156ba70f997eace0ccb0d2c9f67"><div class="ttname"><a href="classSVF_1_1Options.html#a620fe156ba70f997eace0ccb0d2c9f67">SVF::Options::AnderTimeLimit</a></div><div class="ttdeci">static const llvm::cl::opt< unsigned > AnderTimeLimit</div><div class="ttdoc">Time limit for the Andersen&#39;s analyses. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00075">Options.h:75</a></div></div>
|
|
816
816
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a168f7f7a3a8c70dbf2b5b4269cd4c7c5"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a168f7f7a3a8c70dbf2b5b4269cd4c7c5">SVF::SVFUtil::stopAnalysisLimitTimer</a></div><div class="ttdeci">void stopAnalysisLimitTimer(bool limitTimerSet)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00445">SVFUtil.cpp:445</a></div></div>
|
|
817
817
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00151">SVFBasicTypes.h:151</a></div></div>
|
|
818
818
|
</div><!-- fragment -->
|
|
@@ -952,9 +952,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
952
952
|
<p class="definition">Definition at line <a class="el" href="Andersen_8cpp_source.html#l00088">88</a> of file <a class="el" href="Andersen_8cpp_source.html">Andersen.cpp</a>.</p>
|
|
953
953
|
<div class="fragment"><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a69a7d0431c0ddfefed1cb97f3571303a">Options::ConsCGDotGraph</a>)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462">dump</a>(<span class="stringliteral">"consCG_final"</span>);</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="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a87516daebb3d1b5fee9037068d60e268">Options::PrintCGGraph</a>)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#aa87bf07fc538c2cf425138727e7acbce">print</a>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a57ff2bf45ede7a730a8adaba8e61179d">BVDataPTAImpl::finalize</a>();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a57ff2bf45ede7a730a8adaba8e61179d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a57ff2bf45ede7a730a8adaba8e61179d">SVF::BVDataPTAImpl::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalization of pointer analysis, and normalize points-to information to Bit Vector representation...</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00072">PointerAnalysisImpl.cpp:72</a></div></div>
|
|
954
954
|
<div class="ttc" id="classSVF_1_1ConstraintGraph_html_aa87bf07fc538c2cf425138727e7acbce"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aa87bf07fc538c2cf425138727e7acbce">SVF::ConstraintGraph::print</a></div><div class="ttdeci">void print()</div><div class="ttdoc">Print CG into terminal. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00545">ConsG.cpp:545</a></div></div>
|
|
955
|
-
<div class="ttc" id="classSVF_1_1Options_html_a69a7d0431c0ddfefed1cb97f3571303a"><div class="ttname"><a href="classSVF_1_1Options.html#a69a7d0431c0ddfefed1cb97f3571303a">SVF::Options::ConsCGDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt< bool > ConsCGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
955
|
+
<div class="ttc" id="classSVF_1_1Options_html_a69a7d0431c0ddfefed1cb97f3571303a"><div class="ttname"><a href="classSVF_1_1Options.html#a69a7d0431c0ddfefed1cb97f3571303a">SVF::Options::ConsCGDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt< bool > ConsCGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00228">Options.h:228</a></div></div>
|
|
956
956
|
<div class="ttc" id="classSVF_1_1AndersenBase_html_ae21e38a06a4397d11cdd17b0f8f282fd"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">SVF::AndersenBase::consCG</a></div><div class="ttdeci">ConstraintGraph * consCG</div><div class="ttdoc">Constraint Graph. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00143">Andersen.h:143</a></div></div>
|
|
957
|
-
<div class="ttc" id="classSVF_1_1Options_html_a87516daebb3d1b5fee9037068d60e268"><div class="ttname"><a href="classSVF_1_1Options.html#a87516daebb3d1b5fee9037068d60e268">SVF::Options::PrintCGGraph</a></div><div class="ttdeci">static const llvm::cl::opt< bool > PrintCGGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
957
|
+
<div class="ttc" id="classSVF_1_1Options_html_a87516daebb3d1b5fee9037068d60e268"><div class="ttname"><a href="classSVF_1_1Options.html#a87516daebb3d1b5fee9037068d60e268">SVF::Options::PrintCGGraph</a></div><div class="ttdeci">static const llvm::cl::opt< bool > PrintCGGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00230">Options.h:230</a></div></div>
|
|
958
958
|
<div class="ttc" id="classSVF_1_1ConstraintGraph_html_af9fc8308845628fe8900528573e30462"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462">SVF::ConstraintGraph::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump graph into dot file. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00537">ConsG.cpp:537</a></div></div>
|
|
959
959
|
</div><!-- fragment -->
|
|
960
960
|
</div>
|
|
@@ -1024,7 +1024,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1024
1024
|
|
|
1025
1025
|
<p class="definition">Definition at line <a class="el" href="Andersen_8cpp_source.html#l00072">72</a> of file <a class="el" href="Andersen_8cpp_source.html">Andersen.cpp</a>.</p>
|
|
1026
1026
|
<div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">PointerAnalysis::initialize</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="classSVF_1_1WPASolver.html#aa04deb39cd024c051f30ac43d1d62b34">setGraph</a>(<a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenStat.html">AndersenStat</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a69a7d0431c0ddfefed1cb97f3571303a">Options::ConsCGDotGraph</a>)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-><a class="code" href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462">dump</a>(<span class="stringliteral">"consCG_initial"</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> }</div><div class="ttc" id="classSVF_1_1ConstraintGraph_html"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html">SVF::ConstraintGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00044">ConsG.h:44</a></div></div>
|
|
1027
|
-
<div class="ttc" id="classSVF_1_1Options_html_a69a7d0431c0ddfefed1cb97f3571303a"><div class="ttname"><a href="classSVF_1_1Options.html#a69a7d0431c0ddfefed1cb97f3571303a">SVF::Options::ConsCGDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt< bool > ConsCGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
1027
|
+
<div class="ttc" id="classSVF_1_1Options_html_a69a7d0431c0ddfefed1cb97f3571303a"><div class="ttname"><a href="classSVF_1_1Options.html#a69a7d0431c0ddfefed1cb97f3571303a">SVF::Options::ConsCGDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt< bool > ConsCGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00228">Options.h:228</a></div></div>
|
|
1028
1028
|
<div class="ttc" id="classSVF_1_1WPASolver_html_aa04deb39cd024c051f30ac43d1d62b34"><div class="ttname"><a href="classSVF_1_1WPASolver.html#aa04deb39cd024c051f30ac43d1d62b34">SVF::WPASolver::setGraph</a></div><div class="ttdeci">void setGraph(GraphType g)</div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00082">WPASolver.h:82</a></div></div>
|
|
1029
1029
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
|
|
1030
1030
|
<div class="ttc" id="classSVF_1_1AndersenStat_html"><div class="ttname"><a href="classSVF_1_1AndersenStat.html">SVF::AndersenStat</a></div><div class="ttdef"><b>Definition:</b> <a href="WPAStat_8h_source.html#l00048">WPAStat.h:48</a></div></div>
|
|
@@ -1076,7 +1076,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1076
1076
|
<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#l00220">Andersen.h:220</a></div></div>
|
|
1077
1077
|
<div class="ttc" id="classSVF_1_1AndersenHCD_html_a6d6d770848a42c6291db663ab138461d"><div class="ttname"><a href="classSVF_1_1AndersenHCD.html#a6d6d770848a42c6291db663ab138461d">SVF::AndersenHCD::setMergedNode</a></div><div class="ttdeci">void setMergedNode(NodeID node)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00606">Andersen.h:606</a></div></div>
|
|
1078
1078
|
<div class="ttc" id="classSVF_1_1AndersenHCD_html_ab0414e29a745ed14e790c296042d1fe9"><div class="ttname"><a href="classSVF_1_1AndersenHCD.html#ab0414e29a745ed14e790c296042d1fe9">SVF::AndersenHCD::isaMergedNode</a></div><div class="ttdeci">bool isaMergedNode(NodeID node) const</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00601">Andersen.h:601</a></div></div>
|
|
1079
|
-
<div class="ttc" id="classSVF_1_1Andersen_html_a36729160041bc3a3e2b0a92b29062848"><div class="ttname"><a href="classSVF_1_1Andersen.html#a36729160041bc3a3e2b0a92b29062848">SVF::Andersen::mergeNodeToRep</a></div><div class="ttdeci">virtual void mergeNodeToRep(NodeID nodeId, NodeID newRepId)</div><div class="ttdoc">Merge sub node to its rep. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#
|
|
1079
|
+
<div class="ttc" id="classSVF_1_1Andersen_html_a36729160041bc3a3e2b0a92b29062848"><div class="ttname"><a href="classSVF_1_1Andersen.html#a36729160041bc3a3e2b0a92b29062848">SVF::Andersen::mergeNodeToRep</a></div><div class="ttdeci">virtual void mergeNodeToRep(NodeID nodeId, NodeID newRepId)</div><div class="ttdoc">Merge sub node to its rep. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00810">Andersen.cpp:810</a></div></div>
|
|
1080
1080
|
<div class="ttc" id="classSVF_1_1Andersen_html_aad706e332847e6b0892350a05028ba30"><div class="ttname"><a href="classSVF_1_1Andersen.html#aad706e332847e6b0892350a05028ba30">SVF::Andersen::sccRepNode</a></div><div class="ttdeci">NodeID sccRepNode(NodeID id) const</div><div class="ttdoc">SCC methods. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00205">Andersen.h:205</a></div></div>
|
|
1081
1081
|
</div><!-- fragment -->
|
|
1082
1082
|
</div>
|
|
@@ -1159,7 +1159,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1159
1159
|
<div class="ttc" id="classSVF_1_1ConstraintGraph_html_a26722666cc8f2fce61bed73f086a0e87"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">SVF::ConstraintGraph::getConstraintNode</a></div><div class="ttdeci">ConstraintNode * getConstraintNode(NodeID id) const</div><div class="ttdoc">Get/add/remove constraint node. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00107">ConsG.h:107</a></div></div>
|
|
1160
1160
|
<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#l00220">Andersen.h:220</a></div></div>
|
|
1161
1161
|
<div class="ttc" id="classSVF_1_1ConstraintGraph_html_aabe2861fcbc364e2c8aa8114d4879c39"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aabe2861fcbc364e2c8aa8114d4879c39">SVF::ConstraintGraph::moveEdgesToRepNode</a></div><div class="ttdeci">bool moveEdgesToRepNode(ConstraintNode *node, ConstraintNode *rep)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00283">ConsG.h:283</a></div></div>
|
|
1162
|
-
<div class="ttc" id="classSVF_1_1Andersen_html_acd54e3edace1f41511c8f0a6a68dac18"><div class="ttname"><a href="classSVF_1_1Andersen.html#acd54e3edace1f41511c8f0a6a68dac18">SVF::Andersen::updateNodeRepAndSubs</a></div><div class="ttdeci">void updateNodeRepAndSubs(NodeID nodeId, NodeID newRepId)</div><div class="ttdoc">Updates subnodes of its rep, and rep node of its subs. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#
|
|
1162
|
+
<div class="ttc" id="classSVF_1_1Andersen_html_acd54e3edace1f41511c8f0a6a68dac18"><div class="ttname"><a href="classSVF_1_1Andersen.html#acd54e3edace1f41511c8f0a6a68dac18">SVF::Andersen::updateNodeRepAndSubs</a></div><div class="ttdeci">void updateNodeRepAndSubs(NodeID nodeId, NodeID newRepId)</div><div class="ttdoc">Updates subnodes of its rep, and rep node of its subs. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00820">Andersen.cpp:820</a></div></div>
|
|
1163
1163
|
<div class="ttc" id="classSVF_1_1Andersen_html_a4baa6fc95d52afa370fc0fabffd42018"><div class="ttname"><a href="classSVF_1_1Andersen.html#a4baa6fc95d52afa370fc0fabffd42018">SVF::Andersen::updatePropaPts</a></div><div class="ttdeci">void updatePropaPts(NodeID dstId, NodeID srcId)</div><div class="ttdoc">Handle propagated points-to set. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00286">Andersen.h:286</a></div></div>
|
|
1164
1164
|
<div class="ttc" id="classSVF_1_1ConstraintNode_html"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html">SVF::ConstraintNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00040">ConsGNode.h:40</a></div></div>
|
|
1165
1165
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00165">GenericGraph.h:165</a></div></div>
|
|
@@ -1136,6 +1136,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1136
1136
|
<p>merge nodeId to newRepId. Return true if the newRepId is a PWC node </p>
|
|
1137
1137
|
<p>union pts of node to rep</p>
|
|
1138
1138
|
<p>move the edges from node to rep, and remove the node</p>
|
|
1139
|
+
<ol type="1">
|
|
1140
|
+
<li>if find gep edges inside SCC cycle, the rep node will become a PWC node and its pts should be collapsed later.</li>
|
|
1141
|
+
<li>if the node to be merged is already a PWC node, the rep node will also become a PWC node as it will have a self-cycle gep edge.</li>
|
|
1142
|
+
</ol>
|
|
1139
1143
|
<p>set rep and sub relations </p>
|
|
1140
1144
|
|
|
1141
1145
|
<p>Reimplemented from <a class="el" href="classSVF_1_1Andersen.html#ae6b1e54a389abc68994219e39539127e">SVF::Andersen</a>.</p>
|
|
@@ -1040,17 +1040,13 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1040
1040
|
</div><div class="memdoc">
|
|
1041
1041
|
|
|
1042
1042
|
<p>Merge sub node to its rep. </p>
|
|
1043
|
-
<p>update rep's propagated points-to set</p>
|
|
1044
|
-
<ol type="1">
|
|
1045
|
-
<li>if find gep edges inside SCC cycle, the rep node will become a PWC node and its pts should be collapsed later.</li>
|
|
1046
|
-
<li>if the node to be merged is already a PWC node, the rep node will also become a PWC node as it will have a self-cycle gep edge. </li>
|
|
1047
|
-
</ol>
|
|
1043
|
+
<p>update rep's propagated points-to set </p>
|
|
1048
1044
|
|
|
1049
1045
|
<p>Reimplemented from <a class="el" href="classSVF_1_1Andersen.html#a36729160041bc3a3e2b0a92b29062848">SVF::Andersen</a>.</p>
|
|
1050
1046
|
|
|
1051
1047
|
<p class="definition">Definition at line <a class="el" href="AndersenWaveDiff_8cpp_source.html#l00210">210</a> of file <a class="el" href="AndersenWaveDiff_8cpp_source.html">AndersenWaveDiff.cpp</a>.</p>
|
|
1052
1048
|
<div class="fragment"><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">if</span>(nodeId==newRepId)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classSVF_1_1Andersen.html#a4baa6fc95d52afa370fc0fabffd42018">updatePropaPts</a>(newRepId, nodeId);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="classSVF_1_1Andersen.html#a36729160041bc3a3e2b0a92b29062848">Andersen::mergeNodeToRep</a>(nodeId, newRepId);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> }</div><div class="ttc" id="classSVF_1_1Andersen_html_a4baa6fc95d52afa370fc0fabffd42018"><div class="ttname"><a href="classSVF_1_1Andersen.html#a4baa6fc95d52afa370fc0fabffd42018">SVF::Andersen::updatePropaPts</a></div><div class="ttdeci">void updatePropaPts(NodeID dstId, NodeID srcId)</div><div class="ttdoc">Handle propagated points-to set. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00286">Andersen.h:286</a></div></div>
|
|
1053
|
-
<div class="ttc" id="classSVF_1_1Andersen_html_a36729160041bc3a3e2b0a92b29062848"><div class="ttname"><a href="classSVF_1_1Andersen.html#a36729160041bc3a3e2b0a92b29062848">SVF::Andersen::mergeNodeToRep</a></div><div class="ttdeci">virtual void mergeNodeToRep(NodeID nodeId, NodeID newRepId)</div><div class="ttdoc">Merge sub node to its rep. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#
|
|
1049
|
+
<div class="ttc" id="classSVF_1_1Andersen_html_a36729160041bc3a3e2b0a92b29062848"><div class="ttname"><a href="classSVF_1_1Andersen.html#a36729160041bc3a3e2b0a92b29062848">SVF::Andersen::mergeNodeToRep</a></div><div class="ttdeci">virtual void mergeNodeToRep(NodeID nodeId, NodeID newRepId)</div><div class="ttdoc">Merge sub node to its rep. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00810">Andersen.cpp:810</a></div></div>
|
|
1054
1050
|
</div><!-- fragment -->
|
|
1055
1051
|
</div>
|
|
1056
1052
|
</div>
|