svf-tools 1.0.331 → 1.0.335
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +17 -8
- package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8h_source.html +5 -4
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +18 -18
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +37 -37
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +27 -27
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8h.html +14 -12
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +131 -123
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +132 -129
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +13 -13
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +25 -25
- package/SVF-doxygen/html/html/VFG_8h_source.html +18 -17
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/annotated.html +271 -270
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +16 -10
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +36 -14
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt-members.html +145 -0
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +770 -0
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +7 -11
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +19 -138
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +39 -39
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +19 -13
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +43 -21
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +37 -40
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +14 -22
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +37 -40
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +15 -23
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +48 -51
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +18 -26
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +7 -11
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +20 -139
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +18 -11
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +16 -10
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +36 -14
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +37 -40
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +16 -24
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +36 -39
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +15 -23
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +37 -40
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +21 -29
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +3 -9
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +49 -52
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +53 -61
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +23 -15
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +166 -69
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +45 -48
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +40 -48
- package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +16 -10
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +36 -14
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +36 -29
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +250 -31
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +51 -46
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +53 -93
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +37 -40
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +34 -42
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +5 -9
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +18 -137
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +16 -10
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +43 -21
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +36 -39
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +16 -24
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +61 -53
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +24 -18
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +12 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +28 -25
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +185 -107
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +16 -10
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +36 -14
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +18 -12
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +35 -13
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +17 -11
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +35 -13
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +36 -39
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +19 -27
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +36 -39
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +16 -24
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +52 -45
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +56 -25
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +1 -1
- package/SVF-doxygen/html/html/classes.html +91 -93
- package/SVF-doxygen/html/html/functions_a.html +18 -15
- package/SVF-doxygen/html/html/functions_c.html +16 -15
- package/SVF-doxygen/html/html/functions_func.html +18 -15
- package/SVF-doxygen/html/html/functions_func_c.html +24 -23
- package/SVF-doxygen/html/html/functions_func_g.html +45 -37
- package/SVF-doxygen/html/html/functions_func_o.html +5 -3
- package/SVF-doxygen/html/html/functions_func_s.html +1 -1
- package/SVF-doxygen/html/html/functions_func_t.html +1 -0
- package/SVF-doxygen/html/html/functions_g.html +46 -38
- package/SVF-doxygen/html/html/functions_i.html +7 -6
- package/SVF-doxygen/html/html/functions_l.html +4 -4
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_o.html +12 -10
- package/SVF-doxygen/html/html/functions_p.html +12 -8
- package/SVF-doxygen/html/html/functions_rela.html +56 -1
- package/SVF-doxygen/html/html/functions_s.html +14 -15
- package/SVF-doxygen/html/html/functions_t.html +9 -10
- package/SVF-doxygen/html/html/functions_v.html +8 -7
- package/SVF-doxygen/html/html/functions_vars_l.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_o.html +1 -1
- package/SVF-doxygen/html/html/hierarchy.html +17 -16
- package/SVF-doxygen/html/html/menudata.js +13 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +2 -0
- package/SVF-doxygen/html/html/search/all_1.js +5 -4
- package/SVF-doxygen/html/html/search/all_10.js +6 -6
- package/SVF-doxygen/html/html/search/all_13.js +12 -12
- package/SVF-doxygen/html/html/search/all_14.js +7 -7
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +4 -4
- package/SVF-doxygen/html/html/search/all_3.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +12 -8
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +2 -2
- package/SVF-doxygen/html/html/search/all_d.js +3 -3
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/classes_0.js +2 -1
- package/SVF-doxygen/html/html/search/functions_0.js +5 -4
- package/SVF-doxygen/html/html/search/functions_10.js +2 -2
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_13.js +1 -1
- package/SVF-doxygen/html/html/search/functions_2.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +12 -8
- package/SVF-doxygen/html/html/search/functions_b.js +1 -1
- package/SVF-doxygen/html/html/search/functions_d.js +1 -1
- package/SVF-doxygen/html/html/search/related_4.js +1 -2
- package/SVF-doxygen/html/html/search/related_5.js +2 -1
- package/SVF-doxygen/html/html/search/related_6.js +1 -4
- package/SVF-doxygen/html/html/search/related_7.js +4 -1
- package/SVF-doxygen/html/html/search/related_8.js +1 -5
- package/SVF-doxygen/html/html/search/related_9.js +6 -2
- package/SVF-doxygen/html/html/search/related_a.js +2 -1
- package/SVF-doxygen/html/html/search/related_b.html +26 -0
- package/SVF-doxygen/html/html/search/related_b.js +5 -0
- package/SVF-doxygen/html/html/search/searchdata.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +3 -3
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +2 -2
- package/SVF-doxygen/html/html/search/variables_f.js +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +2 -2
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -2
- package/images/svf-stat.pdf +0 -0
- package/include/Graphs/ConsG.h +1 -1
- package/include/Graphs/ConsGEdge.h +2 -2
- package/include/Graphs/ICFGNode.h +2 -2
- package/include/Graphs/VFG.h +4 -4
- package/include/MemoryModel/LocationSet.h +3 -3
- package/include/MemoryModel/SVFIR.h +1 -1
- package/include/MemoryModel/SVFStatements.h +378 -308
- package/include/MemoryModel/SVFVariables.h +31 -30
- package/include/SVF-FE/DCHG.h +3 -3
- package/include/SVF-FE/SVFIRBuilder.h +2 -2
- package/include/Util/IRAnnotator.h +1 -1
- package/lib/Graphs/ConsG.cpp +25 -25
- package/lib/Graphs/VFG.cpp +10 -10
- package/lib/MSSA/MemRegion.cpp +5 -5
- package/lib/MemoryModel/LocationSet.cpp +2 -2
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
- package/lib/MemoryModel/SVFIR.cpp +9 -9
- package/lib/MemoryModel/SVFStatements.cpp +11 -11
- package/lib/MemoryModel/SVFVariables.cpp +2 -2
- package/lib/MemoryModel/SymbolTableInfo.cpp +2 -2
- package/lib/SVF-FE/DCHG.cpp +1 -1
- package/lib/SVF-FE/Graph2Json.cpp +1 -1
- package/lib/SVF-FE/SVFIRBuilder.cpp +4 -4
- package/lib/Util/TypeBasedHeapCloning.cpp +5 -5
- package/lib/WPA/AndersenSFR.cpp +2 -2
- package/lib/WPA/CSC.cpp +2 -2
- package/lib/WPA/FlowSensitiveTBHC.cpp +3 -3
- package/package.json +1 -1
|
@@ -66,10 +66,11 @@ $(function() {
|
|
|
66
66
|
<div class="title">IRAnnotator.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="IRAnnotator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Annotator.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Created on: March 22, 2021</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * Author: Nicholas Tsom</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#ifndef IRANNOTATOR_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#define IRANNOTATOR_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "<a class="code" href="PointerAnalysisImpl_8h.html">MemoryModel/PointerAnalysisImpl.h</a>"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "llvm/IR/Metadata.h"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> {</div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html"> 22</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1IRAnnotator.html">IRAnnotator</a></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#aa54df3d6c0c20c26be90bb68546dc93d"> 25</a></span>  <a class="code" href="classSVF_1_1IRAnnotator.html#aa54df3d6c0c20c26be90bb68546dc93d">IRAnnotator</a>():</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>(nullptr),</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>(nullptr)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  {}</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a6e0454ebd200005fd161cf6a2a0e1c26"> 29</a></span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a6e0454ebd200005fd161cf6a2a0e1c26">~IRAnnotator</a>() {}</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a1dfd230ddbc751ddf6833a6dc22b84f7"> 31</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a1dfd230ddbc751ddf6833a6dc22b84f7">processAndersenResults</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *pag, <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a> *<a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  this->ptsTo = <a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// Add a named metadata node used to check whether or not </span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// this IR has been annotated with Andersen information</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getOrInsertNamedMetadata(<span class="stringliteral">"SVFIR-Annotated"</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = pag-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != pag-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">auto</span> nodeId = it->first;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">auto</span> pagNode = it->second;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">auto</span> gepNode = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>>(pagNode);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (gepNode && writeFlag)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a958e9af846c882ef3eeba4d71ff7ef7d">writePAGgepNode</a>(nodeId, gepNode);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pagNode->hasValue())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a067fe6d76b3b11bbb726e2b40e723f78">processPAGNode</a>(pagNode->getValue(), nodeId, writeFlag);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span> (!writeFlag)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a7f69afba3424c615736bffe2469d9a20">readPAGgepNodes</a>(pag);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Write the PAGgepNode to the IR such that metadata name is the SVFIR node id and the operands</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// are its base node's id and location offset</span></div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a958e9af846c882ef3eeba4d71ff7ef7d"> 64</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a958e9af846c882ef3eeba4d71ff7ef7d">writePAGgepNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> nodeId, <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>* gepNode)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">auto</span> baseNodeId = gepNode-><a class="code" href="classSVF_1_1GepObjVar.html#a4c5e346db61f7e04c15bf8527d8eff3c">getBaseNode</a>();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">auto</span> locationSetOffset = gepNode-><a class="code" href="classSVF_1_1GepObjVar.html#aae0159e4e93e3607e425933b8ce0a66c">getOffset</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getContext();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  llvm::SmallVector<llvm::Metadata *, 32> operands;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  operands.push_back(llvm::MDString::get(context, std::to_string(baseNodeId)));</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  operands.push_back(llvm::MDString::get(context, std::to_string(locationSetOffset)));</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  llvm::MDTuple *metadata = llvm::MDTuple::get(context, operands);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::string label = <span class="stringliteral">"gepnode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getOrInsertNamedMetadata(label)->addOperand(metadata);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// Reads the PAGGepNodes in the annotated IR and creates a new SVFIR Node based on the</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// data contained in the operands of the metadata node</span></div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a7f69afba3424c615736bffe2469d9a20"> 82</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a7f69afba3424c615736bffe2469d9a20">readPAGgepNodes</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *pag)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->named_metadata_begin(); it != <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->named_metadata_end(); ++it)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::string label = it->getName().str();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  std::string toErase = <span class="stringliteral">"gepnode-"</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">SVF::Size_t</a> pos = label.find(toErase);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span> (pos == std::string::npos)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  label.erase(pos, toErase.length());</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> nodeId = std::stoi(label);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">auto</span> mdNode = it->getOperand(0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> baseNodeId = std::stoi(llvm::cast<llvm::MDString>(mdNode->getOperand(0))->getString().str());</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">SVF::Size_t</a> locationSetOffset = std::stoi(llvm::cast<llvm::MDString>(mdNode->getOperand(1))->getString().str());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> locationSet = <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(locationSetOffset);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> gepnodeId = pag-><a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(baseNodeId, locationSet);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(nodeId == gepnodeId && <span class="stringliteral">"nodeId != gepnodeId"</span>);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// Deduce the LLVM value's type, and process the metadata accordingly</span></div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a067fe6d76b3b11bbb726e2b40e723f78"> 109</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a067fe6d76b3b11bbb726e2b40e723f78">processPAGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *value, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span> (<span class="keyword">auto</span> instruction = const_cast<Instruction *>(SVFUtil::dyn_cast<Instruction>(value)))</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a9ed32d75937cc2da63cf95fbc477c66a">processInstructionNode</a>(instruction, nodeId, writeFlag);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> argument = const_cast<Argument *>(SVFUtil::dyn_cast<Argument>(value)))</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a79ce14045e7321569b95cff0b4800c08">processArgumentNode</a>(argument, nodeId, writeFlag);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> <span class="keyword">function</span> = const_cast<Function *>(SVFUtil::dyn_cast<Function>(value)))</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a31cbc6e5c63442cdbab3eea1b7b5393f">processFunctionNode</a>(<span class="keyword">function</span>, nodeId, writeFlag);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> globalVar = const_cast<GlobalVariable *>(SVFUtil::dyn_cast<GlobalVariable>(value)))</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#ac0aa0266a7284a46ad62211fb595d663">processGlobalVarNode</a>(globalVar, nodeId, writeFlag);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> basicBlock = const_cast<BasicBlock *>(SVFUtil::dyn_cast<BasicBlock>(value)))</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a6da6bf2db9dd582739e621aefc72025f">processBasicBlockNode</a>(basicBlock, nodeId, writeFlag);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> constant = const_cast<Constant *>(SVFUtil::dyn_cast<Constant>(value)))</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a0a26b250269a2e38a5507d68fdbe03f4">processConstantNode</a>(nodeId, writeFlag);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> inlineAsm = const_cast<llvm::InlineAsm *>(SVFUtil::dyn_cast<llvm::InlineAsm>(value)))</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#ad7bc258f3a6201d06f80b3c4422536b2">processInlineAsmNode</a>(inlineAsm, nodeId, writeFlag);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  std::cout << <span class="stringliteral">"Value is NOT a Instruction, Argument, Function, GlobalVariable, BasicBlock, Constant or InlineAsm"</span> << std::endl;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() << *value << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a9ed32d75937cc2da63cf95fbc477c66a"> 146</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a9ed32d75937cc2da63cf95fbc477c66a">processInstructionNode</a>(<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *instruction, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  std::string label = <span class="stringliteral">"inode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = instruction->getContext();</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">auto</span> mdNodePts = <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(nodeId, context);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  instruction->setMetadata(label, mdNodePts);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">auto</span> mdNode = instruction->getMetadata(label);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdNode != <span class="keyword">nullptr</span> && <span class="stringliteral">"Failed to retrive valid node id at instruction"</span>);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227">addAndersenMetadata</a>(nodeId, mdNode);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a79ce14045e7321569b95cff0b4800c08"> 164</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a79ce14045e7321569b95cff0b4800c08">processArgumentNode</a>(<a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a> *argument, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  std::string label = <span class="stringliteral">"anode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = argument->getContext();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">auto</span> mdNodePts = <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(nodeId, context);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  argument->getParent()->setMetadata(label, mdNodePts);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">auto</span> mdNode = argument->getParent()->getMetadata(label);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdNode != <span class="keyword">nullptr</span> && <span class="stringliteral">"Failed to retrive valid node id at argument"</span>);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227">addAndersenMetadata</a>(nodeId, mdNode);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a31cbc6e5c63442cdbab3eea1b7b5393f"> 182</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a31cbc6e5c63442cdbab3eea1b7b5393f">processFunctionNode</a>(<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<span class="keyword">function</span>, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  std::string label = <span class="stringliteral">"fnode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = <span class="keyword">function</span>->getContext();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">auto</span> mdNodePts = <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(nodeId, context);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keyword">function</span>->setMetadata(label, mdNodePts);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">auto</span> mdNode = <span class="keyword">function</span>->getMetadata(label);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdNode != <span class="keyword">nullptr</span> && <span class="stringliteral">"Failed to retrive valid node id at function"</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227">addAndersenMetadata</a>(nodeId, mdNode);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#ac0aa0266a7284a46ad62211fb595d663"> 200</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#ac0aa0266a7284a46ad62211fb595d663">processGlobalVarNode</a>(<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *globalVar, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  std::string label = <span class="stringliteral">"gnode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = globalVar->getContext();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">auto</span> mdNodePts = <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(nodeId, context);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  globalVar->setMetadata(label, mdNodePts);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">else</span></div><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="keyword">auto</span> mdNode = globalVar->getMetadata(label);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdNode != <span class="keyword">nullptr</span> && <span class="stringliteral">"Failed to retrive valid node id at instruction"</span>);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227">addAndersenMetadata</a>(nodeId, mdNode);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a6da6bf2db9dd582739e621aefc72025f"> 218</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a6da6bf2db9dd582739e621aefc72025f">processBasicBlockNode</a>(<a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *basicBlock, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  std::string label = <span class="stringliteral">"bnode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = basicBlock->getContext();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">auto</span> mdNodePts = <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(nodeId, context);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  basicBlock->getParent()->setMetadata(label, mdNodePts);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">auto</span> mdNode = basicBlock->getParent()->getMetadata(label);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdNode != <span class="keyword">nullptr</span> && <span class="stringliteral">"Failed to retrive valid node id at basicBlock"</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227">addAndersenMetadata</a>(nodeId, mdNode);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a0a26b250269a2e38a5507d68fdbe03f4"> 236</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a0a26b250269a2e38a5507d68fdbe03f4">processConstantNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  std::string label = <span class="stringliteral">"cnode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getContext();</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keyword">auto</span> mdNodePts = <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(nodeId, context);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getOrInsertNamedMetadata(label)->addOperand(mdNodePts);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keyword">auto</span> mdNode = <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getNamedMetadata(label);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdNode != <span class="keyword">nullptr</span> && <span class="stringliteral">"Failed to retrive valid node id at instruction"</span>);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#af48723d319bbe2ecfd0c4777c1c92dc1">addAndersenNamedMetdata</a>(nodeId, mdNode);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#ad7bc258f3a6201d06f80b3c4422536b2"> 254</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#ad7bc258f3a6201d06f80b3c4422536b2">processInlineAsmNode</a>(llvm::InlineAsm *inlineAsm, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  std::string label = <span class="stringliteral">"iAsmnode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getContext();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keyword">auto</span> mdNodePts = <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(nodeId, context);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getOrInsertNamedMetadata(label)->addOperand(mdNodePts);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">auto</span> mdNode = <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getNamedMetadata(label);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdNode != <span class="keyword">nullptr</span> && <span class="stringliteral">"Failed to retrive valid node id at inlineAsm"</span>);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#af48723d319bbe2ecfd0c4777c1c92dc1">addAndersenNamedMetdata</a>(nodeId, mdNode);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227"> 272</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227">addAndersenMetadata</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *mdNode)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span> (mdNode)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < mdNode->getNumOperands(); i++)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">auto</span> anderNodeIdStr = llvm::cast<llvm::MDString>(mdNode->getOperand(i))->getString().str();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keyword">auto</span> anderNodeId = <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a>(std::stoul(anderNodeIdStr));</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>-><a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(nodeId, anderNodeId);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#af48723d319bbe2ecfd0c4777c1c92dc1"> 285</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#af48723d319bbe2ecfd0c4777c1c92dc1">addAndersenNamedMetdata</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a> *mdNode)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">if</span> (mdNode)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < mdNode->getNumOperands(); i++)</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">auto</span> node = mdNode->getOperand(i);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < node->getNumOperands(); j++)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">auto</span> anderNodeIdStr = llvm::cast<llvm::MDString>(node->getOperand(j))->getString().str();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keyword">auto</span> anderNodeId = <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a>(std::stoul(anderNodeIdStr));</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>-><a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(nodeId, anderNodeId);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441"> 303</a></span>  <span class="keyword">inline</span> llvm::MDTuple* <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context)</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  llvm::SmallVector<llvm::Metadata *, 32> operands;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">auto</span> &ptTo = <a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>-><a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(nodeId);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> p : ptTo)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  operands.push_back(llvm::MDString::get(context, std::to_string(p)));</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> llvm::MDTuple::get(context, operands);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b"> 314</a></span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>;</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5"> 315</a></span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a> *<a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> };</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="preprocessor">#endif </span><span class="comment">/* IRANNOTATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00042">PointerAnalysisImpl.h:42</a></div></div>
|
|
69
|
+
<a href="IRAnnotator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Annotator.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Created on: March 22, 2021</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * Author: Nicholas Tsom</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#ifndef IRANNOTATOR_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#define IRANNOTATOR_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "<a class="code" href="PointerAnalysisImpl_8h.html">MemoryModel/PointerAnalysisImpl.h</a>"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "llvm/IR/Metadata.h"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> {</div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html"> 22</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1IRAnnotator.html">IRAnnotator</a></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#aa54df3d6c0c20c26be90bb68546dc93d"> 25</a></span>  <a class="code" href="classSVF_1_1IRAnnotator.html#aa54df3d6c0c20c26be90bb68546dc93d">IRAnnotator</a>():</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>(nullptr),</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>(nullptr)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  {}</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a6e0454ebd200005fd161cf6a2a0e1c26"> 29</a></span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a6e0454ebd200005fd161cf6a2a0e1c26">~IRAnnotator</a>() {}</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a1dfd230ddbc751ddf6833a6dc22b84f7"> 31</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a1dfd230ddbc751ddf6833a6dc22b84f7">processAndersenResults</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *pag, <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a> *<a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  this->ptsTo = <a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// Add a named metadata node used to check whether or not </span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// this IR has been annotated with Andersen information</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getOrInsertNamedMetadata(<span class="stringliteral">"SVFIR-Annotated"</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = pag-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != pag-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">auto</span> nodeId = it->first;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">auto</span> pagNode = it->second;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">auto</span> gepNode = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>>(pagNode);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (gepNode && writeFlag)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a958e9af846c882ef3eeba4d71ff7ef7d">writePAGgepNode</a>(nodeId, gepNode);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pagNode->hasValue())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a067fe6d76b3b11bbb726e2b40e723f78">processPAGNode</a>(pagNode->getValue(), nodeId, writeFlag);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span> (!writeFlag)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a7f69afba3424c615736bffe2469d9a20">readPAGgepNodes</a>(pag);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Write the PAGgepNode to the IR such that metadata name is the SVFIR node id and the operands</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// are its base node's id and location offset</span></div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a958e9af846c882ef3eeba4d71ff7ef7d"> 64</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a958e9af846c882ef3eeba4d71ff7ef7d">writePAGgepNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> nodeId, <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>* gepNode)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">auto</span> baseNodeId = gepNode-><a class="code" href="classSVF_1_1GepObjVar.html#a4c5e346db61f7e04c15bf8527d8eff3c">getBaseNode</a>();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">auto</span> locationSetOffset = gepNode-><a class="code" href="classSVF_1_1GepObjVar.html#a8daba70e9cc23d2411f5be0b1cd1054d">getFieldOffset</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getContext();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  llvm::SmallVector<llvm::Metadata *, 32> operands;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  operands.push_back(llvm::MDString::get(context, std::to_string(baseNodeId)));</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  operands.push_back(llvm::MDString::get(context, std::to_string(locationSetOffset)));</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  llvm::MDTuple *metadata = llvm::MDTuple::get(context, operands);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::string label = <span class="stringliteral">"gepnode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getOrInsertNamedMetadata(label)->addOperand(metadata);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// Reads the PAGGepNodes in the annotated IR and creates a new SVFIR Node based on the</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// data contained in the operands of the metadata node</span></div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a7f69afba3424c615736bffe2469d9a20"> 82</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a7f69afba3424c615736bffe2469d9a20">readPAGgepNodes</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *pag)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->named_metadata_begin(); it != <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->named_metadata_end(); ++it)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::string label = it->getName().str();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  std::string toErase = <span class="stringliteral">"gepnode-"</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">SVF::Size_t</a> pos = label.find(toErase);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span> (pos == std::string::npos)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  label.erase(pos, toErase.length());</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> nodeId = std::stoi(label);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">auto</span> mdNode = it->getOperand(0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> baseNodeId = std::stoi(llvm::cast<llvm::MDString>(mdNode->getOperand(0))->getString().str());</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">SVF::Size_t</a> locationSetOffset = std::stoi(llvm::cast<llvm::MDString>(mdNode->getOperand(1))->getString().str());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> locationSet = <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(locationSetOffset);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> gepnodeId = pag-><a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(baseNodeId, locationSet);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(nodeId == gepnodeId && <span class="stringliteral">"nodeId != gepnodeId"</span>);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// Deduce the LLVM value's type, and process the metadata accordingly</span></div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a067fe6d76b3b11bbb726e2b40e723f78"> 109</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a067fe6d76b3b11bbb726e2b40e723f78">processPAGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *value, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span> (<span class="keyword">auto</span> instruction = const_cast<Instruction *>(SVFUtil::dyn_cast<Instruction>(value)))</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a9ed32d75937cc2da63cf95fbc477c66a">processInstructionNode</a>(instruction, nodeId, writeFlag);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> argument = const_cast<Argument *>(SVFUtil::dyn_cast<Argument>(value)))</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a79ce14045e7321569b95cff0b4800c08">processArgumentNode</a>(argument, nodeId, writeFlag);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> <span class="keyword">function</span> = const_cast<Function *>(SVFUtil::dyn_cast<Function>(value)))</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a31cbc6e5c63442cdbab3eea1b7b5393f">processFunctionNode</a>(<span class="keyword">function</span>, nodeId, writeFlag);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> globalVar = const_cast<GlobalVariable *>(SVFUtil::dyn_cast<GlobalVariable>(value)))</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#ac0aa0266a7284a46ad62211fb595d663">processGlobalVarNode</a>(globalVar, nodeId, writeFlag);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> basicBlock = const_cast<BasicBlock *>(SVFUtil::dyn_cast<BasicBlock>(value)))</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a6da6bf2db9dd582739e621aefc72025f">processBasicBlockNode</a>(basicBlock, nodeId, writeFlag);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> constant = const_cast<Constant *>(SVFUtil::dyn_cast<Constant>(value)))</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a0a26b250269a2e38a5507d68fdbe03f4">processConstantNode</a>(nodeId, writeFlag);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> inlineAsm = const_cast<llvm::InlineAsm *>(SVFUtil::dyn_cast<llvm::InlineAsm>(value)))</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#ad7bc258f3a6201d06f80b3c4422536b2">processInlineAsmNode</a>(inlineAsm, nodeId, writeFlag);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  std::cout << <span class="stringliteral">"Value is NOT a Instruction, Argument, Function, GlobalVariable, BasicBlock, Constant or InlineAsm"</span> << std::endl;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() << *value << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a9ed32d75937cc2da63cf95fbc477c66a"> 146</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a9ed32d75937cc2da63cf95fbc477c66a">processInstructionNode</a>(<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *instruction, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  std::string label = <span class="stringliteral">"inode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = instruction->getContext();</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">auto</span> mdNodePts = <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(nodeId, context);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  instruction->setMetadata(label, mdNodePts);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">auto</span> mdNode = instruction->getMetadata(label);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdNode != <span class="keyword">nullptr</span> && <span class="stringliteral">"Failed to retrive valid node id at instruction"</span>);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227">addAndersenMetadata</a>(nodeId, mdNode);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a79ce14045e7321569b95cff0b4800c08"> 164</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a79ce14045e7321569b95cff0b4800c08">processArgumentNode</a>(<a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a> *argument, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  std::string label = <span class="stringliteral">"anode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = argument->getContext();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">auto</span> mdNodePts = <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(nodeId, context);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  argument->getParent()->setMetadata(label, mdNodePts);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">auto</span> mdNode = argument->getParent()->getMetadata(label);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdNode != <span class="keyword">nullptr</span> && <span class="stringliteral">"Failed to retrive valid node id at argument"</span>);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227">addAndersenMetadata</a>(nodeId, mdNode);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a31cbc6e5c63442cdbab3eea1b7b5393f"> 182</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a31cbc6e5c63442cdbab3eea1b7b5393f">processFunctionNode</a>(<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<span class="keyword">function</span>, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  std::string label = <span class="stringliteral">"fnode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = <span class="keyword">function</span>->getContext();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">auto</span> mdNodePts = <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(nodeId, context);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keyword">function</span>->setMetadata(label, mdNodePts);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">auto</span> mdNode = <span class="keyword">function</span>->getMetadata(label);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdNode != <span class="keyword">nullptr</span> && <span class="stringliteral">"Failed to retrive valid node id at function"</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227">addAndersenMetadata</a>(nodeId, mdNode);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#ac0aa0266a7284a46ad62211fb595d663"> 200</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#ac0aa0266a7284a46ad62211fb595d663">processGlobalVarNode</a>(<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *globalVar, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  std::string label = <span class="stringliteral">"gnode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = globalVar->getContext();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">auto</span> mdNodePts = <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(nodeId, context);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  globalVar->setMetadata(label, mdNodePts);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">else</span></div><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="keyword">auto</span> mdNode = globalVar->getMetadata(label);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdNode != <span class="keyword">nullptr</span> && <span class="stringliteral">"Failed to retrive valid node id at instruction"</span>);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227">addAndersenMetadata</a>(nodeId, mdNode);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a6da6bf2db9dd582739e621aefc72025f"> 218</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a6da6bf2db9dd582739e621aefc72025f">processBasicBlockNode</a>(<a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *basicBlock, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  std::string label = <span class="stringliteral">"bnode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = basicBlock->getContext();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">auto</span> mdNodePts = <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(nodeId, context);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  basicBlock->getParent()->setMetadata(label, mdNodePts);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">auto</span> mdNode = basicBlock->getParent()->getMetadata(label);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdNode != <span class="keyword">nullptr</span> && <span class="stringliteral">"Failed to retrive valid node id at basicBlock"</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227">addAndersenMetadata</a>(nodeId, mdNode);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a0a26b250269a2e38a5507d68fdbe03f4"> 236</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#a0a26b250269a2e38a5507d68fdbe03f4">processConstantNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  std::string label = <span class="stringliteral">"cnode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getContext();</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keyword">auto</span> mdNodePts = <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(nodeId, context);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getOrInsertNamedMetadata(label)->addOperand(mdNodePts);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keyword">auto</span> mdNode = <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getNamedMetadata(label);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdNode != <span class="keyword">nullptr</span> && <span class="stringliteral">"Failed to retrive valid node id at instruction"</span>);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#af48723d319bbe2ecfd0c4777c1c92dc1">addAndersenNamedMetdata</a>(nodeId, mdNode);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#ad7bc258f3a6201d06f80b3c4422536b2"> 254</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#ad7bc258f3a6201d06f80b3c4422536b2">processInlineAsmNode</a>(llvm::InlineAsm *inlineAsm, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <span class="keywordtype">bool</span> writeFlag)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  std::string label = <span class="stringliteral">"iAsmnode-"</span> + std::to_string(nodeId);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span> (writeFlag)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context = <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getContext();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keyword">auto</span> mdNodePts = <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(nodeId, context);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getOrInsertNamedMetadata(label)->addOperand(mdNodePts);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">auto</span> mdNode = <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>->getNamedMetadata(label);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdNode != <span class="keyword">nullptr</span> && <span class="stringliteral">"Failed to retrive valid node id at inlineAsm"</span>);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#af48723d319bbe2ecfd0c4777c1c92dc1">addAndersenNamedMetdata</a>(nodeId, mdNode);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227"> 272</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227">addAndersenMetadata</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *mdNode)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span> (mdNode)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < mdNode->getNumOperands(); i++)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">auto</span> anderNodeIdStr = llvm::cast<llvm::MDString>(mdNode->getOperand(i))->getString().str();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keyword">auto</span> anderNodeId = <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a>(std::stoul(anderNodeIdStr));</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>-><a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(nodeId, anderNodeId);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#af48723d319bbe2ecfd0c4777c1c92dc1"> 285</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1IRAnnotator.html#af48723d319bbe2ecfd0c4777c1c92dc1">addAndersenNamedMetdata</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a> *mdNode)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">if</span> (mdNode)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < mdNode->getNumOperands(); i++)</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">auto</span> node = mdNode->getOperand(i);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < node->getNumOperands(); j++)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">auto</span> anderNodeIdStr = llvm::cast<llvm::MDString>(node->getOperand(j))->getString().str();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keyword">auto</span> anderNodeId = <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a>(std::stoul(anderNodeIdStr));</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>-><a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(nodeId, anderNodeId);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441"> 303</a></span>  <span class="keyword">inline</span> llvm::MDTuple* <a class="code" href="classSVF_1_1IRAnnotator.html#a08a3ad9b6d872a70b1480f1beed49441">getMdNodePts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a> &nodeId, <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &context)</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  llvm::SmallVector<llvm::Metadata *, 32> operands;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">auto</span> &ptTo = <a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>-><a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(nodeId);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> p : ptTo)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  operands.push_back(llvm::MDString::get(context, std::to_string(p)));</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> llvm::MDTuple::get(context, operands);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b"> 314</a></span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* <a class="code" href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">mainModule</a>;</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5"> 315</a></span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a> *<a class="code" href="classSVF_1_1IRAnnotator.html#afd8770eee0c14386c407cae026ce87b5">ptsTo</a>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> };</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="preprocessor">#endif </span><span class="comment">/* IRANNOTATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00042">PointerAnalysisImpl.h:42</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1IRAnnotator_html_a1dfd230ddbc751ddf6833a6dc22b84f7"><div class="ttname"><a href="classSVF_1_1IRAnnotator.html#a1dfd230ddbc751ddf6833a6dc22b84f7">SVF::IRAnnotator::processAndersenResults</a></div><div class="ttdeci">void processAndersenResults(SVFIR *pag, BVDataPTAImpl *ptsTo, bool writeFlag)</div><div class="ttdef"><b>Definition:</b> <a href="IRAnnotator_8h_source.html#l00031">IRAnnotator.h:31</a></div></div>
|
|
71
71
|
<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>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1IRAnnotator_html_a31cbc6e5c63442cdbab3eea1b7b5393f"><div class="ttname"><a href="classSVF_1_1IRAnnotator.html#a31cbc6e5c63442cdbab3eea1b7b5393f">SVF::IRAnnotator::processFunctionNode</a></div><div class="ttdeci">void processFunctionNode(Function *function, const SVF::NodeID &nodeId, bool writeFlag)</div><div class="ttdef"><b>Definition:</b> <a href="IRAnnotator_8h_source.html#l00182">IRAnnotator.h:182</a></div></div>
|
|
73
|
+
<div class="ttc" id="classSVF_1_1GepObjVar_html_a8daba70e9cc23d2411f5be0b1cd1054d"><div class="ttname"><a href="classSVF_1_1GepObjVar.html#a8daba70e9cc23d2411f5be0b1cd1054d">SVF::GepObjVar::getFieldOffset</a></div><div class="ttdeci">u32_t getFieldOffset() const</div><div class="ttdoc">offset of the mem object </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00496">SVFVariables.h:496</a></div></div>
|
|
73
74
|
<div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00084">BasicTypes.h:84</a></div></div>
|
|
74
75
|
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
|
|
75
76
|
<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>
|
|
@@ -77,7 +78,6 @@ $(function() {
|
|
|
77
78
|
<div class="ttc" id="namespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
|
|
78
79
|
<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>
|
|
79
80
|
<div class="ttc" id="classSVF_1_1IRAnnotator_html_a6da6bf2db9dd582739e621aefc72025f"><div class="ttname"><a href="classSVF_1_1IRAnnotator.html#a6da6bf2db9dd582739e621aefc72025f">SVF::IRAnnotator::processBasicBlockNode</a></div><div class="ttdeci">void processBasicBlockNode(BasicBlock *basicBlock, const SVF::NodeID &nodeId, bool writeFlag)</div><div class="ttdef"><b>Definition:</b> <a href="IRAnnotator_8h_source.html#l00218">IRAnnotator.h:218</a></div></div>
|
|
80
|
-
<div class="ttc" id="classSVF_1_1GepObjVar_html_aae0159e4e93e3607e425933b8ce0a66c"><div class="ttname"><a href="classSVF_1_1GepObjVar.html#aae0159e4e93e3607e425933b8ce0a66c">SVF::GepObjVar::getOffset</a></div><div class="ttdeci">u32_t getOffset() const</div><div class="ttdoc">offset of the mem object </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00495">SVFVariables.h:495</a></div></div>
|
|
81
81
|
<div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
|
|
82
82
|
<div class="ttc" id="SVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
|
|
83
83
|
<div class="ttc" id="classSVF_1_1IRAnnotator_html_aa36cd38b0518a9c9a3b57cea9b07b227"><div class="ttname"><a href="classSVF_1_1IRAnnotator.html#aa36cd38b0518a9c9a3b57cea9b07b227">SVF::IRAnnotator::addAndersenMetadata</a></div><div class="ttdeci">void addAndersenMetadata(const SVF::NodeID &nodeId, MDNode *mdNode)</div><div class="ttdef"><b>Definition:</b> <a href="IRAnnotator_8h_source.html#l00272">IRAnnotator.h:272</a></div></div>
|
|
@@ -96,7 +96,7 @@ $(function() {
|
|
|
96
96
|
<div class="ttc" id="namespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdoc">LLVM Aliases and constants. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
97
97
|
<div class="ttc" id="classSVF_1_1IRAnnotator_html_a01462e9ee84f490514598c68e8c9557b"><div class="ttname"><a href="classSVF_1_1IRAnnotator.html#a01462e9ee84f490514598c68e8c9557b">SVF::IRAnnotator::mainModule</a></div><div class="ttdeci">Module * mainModule</div><div class="ttdef"><b>Definition:</b> <a href="IRAnnotator_8h_source.html#l00314">IRAnnotator.h:314</a></div></div>
|
|
98
98
|
<div class="ttc" id="classSVF_1_1IRAnnotator_html_a7f69afba3424c615736bffe2469d9a20"><div class="ttname"><a href="classSVF_1_1IRAnnotator.html#a7f69afba3424c615736bffe2469d9a20">SVF::IRAnnotator::readPAGgepNodes</a></div><div class="ttdeci">void readPAGgepNodes(SVFIR *pag)</div><div class="ttdef"><b>Definition:</b> <a href="IRAnnotator_8h_source.html#l00082">IRAnnotator.h:82</a></div></div>
|
|
99
|
-
<div class="ttc" id="classSVF_1_1GepObjVar_html"><div class="ttname"><a href="classSVF_1_1GepObjVar.html">SVF::GepObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#
|
|
99
|
+
<div class="ttc" id="classSVF_1_1GepObjVar_html"><div class="ttname"><a href="classSVF_1_1GepObjVar.html">SVF::GepObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00452">SVFVariables.h:452</a></div></div>
|
|
100
100
|
<div class="ttc" id="classSVF_1_1IRAnnotator_html_ad7bc258f3a6201d06f80b3c4422536b2"><div class="ttname"><a href="classSVF_1_1IRAnnotator.html#ad7bc258f3a6201d06f80b3c4422536b2">SVF::IRAnnotator::processInlineAsmNode</a></div><div class="ttdeci">void processInlineAsmNode(llvm::InlineAsm *inlineAsm, const SVF::NodeID &nodeId, bool writeFlag)</div><div class="ttdef"><b>Definition:</b> <a href="IRAnnotator_8h_source.html#l00254">IRAnnotator.h:254</a></div></div>
|
|
101
101
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_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>
|
|
102
102
|
<div class="ttc" id="PointerAnalysisImpl_8h_html"><div class="ttname"><a href="PointerAnalysisImpl_8h.html">PointerAnalysisImpl.h</a></div></div>
|
|
@@ -105,7 +105,7 @@ $(function() {
|
|
|
105
105
|
<div class="ttc" id="namespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00143">BasicTypes.h:143</a></div></div>
|
|
106
106
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
107
107
|
<div class="ttc" id="namespaceSVF_html_affba423b674a0aba723e33101826e297"><div class="ttname"><a href="namespaceSVF.html#affba423b674a0aba723e33101826e297">SVF::LLVMContext</a></div><div class="ttdeci">llvm::LLVMContext LLVMContext</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
108
|
-
<div class="ttc" id="classSVF_1_1GepObjVar_html_a4c5e346db61f7e04c15bf8527d8eff3c"><div class="ttname"><a href="classSVF_1_1GepObjVar.html#a4c5e346db61f7e04c15bf8527d8eff3c">SVF::GepObjVar::getBaseNode</a></div><div class="ttdeci">NodeID getBaseNode(void) const</div><div class="ttdoc">Return the base object from which this GEP node came from. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#
|
|
108
|
+
<div class="ttc" id="classSVF_1_1GepObjVar_html_a4c5e346db61f7e04c15bf8527d8eff3c"><div class="ttname"><a href="classSVF_1_1GepObjVar.html#a4c5e346db61f7e04c15bf8527d8eff3c">SVF::GepObjVar::getBaseNode</a></div><div class="ttdeci">NodeID getBaseNode(void) const</div><div class="ttdoc">Return the base object from which this GEP node came from. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00508">SVFVariables.h:508</a></div></div>
|
|
109
109
|
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
|
|
110
110
|
<div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00072">LocationSet.h:72</a></div></div>
|
|
111
111
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|