svf-tools 1.0.770 → 1.0.771
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/Andersen_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/BasicTypes_8h.html +4 -0
- package/SVF-doxygen/html/html/BasicTypes_8h_source.html +120 -114
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/DCHG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +68 -29
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +4 -0
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +16 -5
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR2ConsExeState_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +361 -356
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +10 -10
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFValue_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +342 -338
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +59 -23
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +106 -2
- package/SVF-doxygen/html/html/namespacemembers_func_g.html +9 -3
- package/SVF-doxygen/html/html/namespacemembers_g.html +11 -5
- package/SVF-doxygen/html/html/namespacemembers_s.html +6 -0
- package/SVF-doxygen/html/html/namespacemembers_type_s.html +6 -0
- package/SVF-doxygen/html/html/search/all_10.js +324 -324
- package/SVF-doxygen/html/html/search/all_11.js +213 -213
- package/SVF-doxygen/html/html/search/all_12.js +541 -539
- package/SVF-doxygen/html/html/search/all_13.js +190 -190
- package/SVF-doxygen/html/html/search/all_14.js +66 -66
- package/SVF-doxygen/html/html/search/all_15.js +170 -170
- package/SVF-doxygen/html/html/search/all_16.js +60 -60
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/html/search/all_19.js +11 -11
- package/SVF-doxygen/html/html/search/all_1a.js +169 -169
- package/SVF-doxygen/html/html/search/all_7.js +746 -744
- package/SVF-doxygen/html/html/search/all_8.js +191 -191
- package/SVF-doxygen/html/html/search/all_9.js +602 -602
- package/SVF-doxygen/html/html/search/all_a.js +46 -46
- package/SVF-doxygen/html/html/search/all_b.js +26 -26
- package/SVF-doxygen/html/html/search/all_c.js +116 -116
- package/SVF-doxygen/html/html/search/all_d.js +196 -196
- package/SVF-doxygen/html/html/search/all_e.js +206 -206
- package/SVF-doxygen/html/html/search/all_f.js +116 -116
- package/SVF-doxygen/html/html/search/classes_0.js +26 -26
- package/SVF-doxygen/html/html/search/classes_1.js +9 -9
- package/SVF-doxygen/html/html/search/classes_10.js +73 -73
- package/SVF-doxygen/html/html/search/classes_11.js +15 -15
- package/SVF-doxygen/html/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/html/search/classes_14.js +14 -14
- package/SVF-doxygen/html/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/html/search/classes_2.js +76 -76
- package/SVF-doxygen/html/html/search/classes_3.js +35 -35
- package/SVF-doxygen/html/html/search/classes_4.js +8 -8
- package/SVF-doxygen/html/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/html/search/classes_6.js +98 -98
- package/SVF-doxygen/html/html/search/classes_7.js +33 -33
- package/SVF-doxygen/html/html/search/classes_8.js +56 -56
- package/SVF-doxygen/html/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/html/search/classes_d.js +18 -18
- package/SVF-doxygen/html/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/html/search/defines_1.js +2 -2
- package/SVF-doxygen/html/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/html/search/defines_3.js +20 -20
- package/SVF-doxygen/html/html/search/defines_4.js +3 -3
- package/SVF-doxygen/html/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/html/search/defines_c.js +3 -3
- package/SVF-doxygen/html/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/html/search/defines_e.js +7 -7
- package/SVF-doxygen/html/html/search/defines_f.js +3 -3
- package/SVF-doxygen/html/html/search/enums_0.js +3 -3
- package/SVF-doxygen/html/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/html/search/enums_2.js +8 -8
- package/SVF-doxygen/html/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/html/search/enums_4.js +3 -3
- package/SVF-doxygen/html/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
- package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
- package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -36
- package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/html/search/enumvalues_5.js +47 -47
- package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
- package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -15
- package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
- package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
- package/SVF-doxygen/html/html/search/files_0.js +13 -13
- package/SVF-doxygen/html/html/search/files_1.js +7 -7
- package/SVF-doxygen/html/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/html/search/files_2.js +49 -49
- package/SVF-doxygen/html/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/html/search/files_4.js +5 -5
- package/SVF-doxygen/html/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/html/search/files_6.js +9 -9
- package/SVF-doxygen/html/html/search/files_7.js +14 -14
- package/SVF-doxygen/html/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/html/search/files_b.js +2 -2
- package/SVF-doxygen/html/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/html/search/functions_0.js +12 -12
- package/SVF-doxygen/html/html/search/functions_1.js +350 -350
- package/SVF-doxygen/html/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/html/search/functions_11.js +127 -127
- package/SVF-doxygen/html/html/search/functions_12.js +275 -275
- package/SVF-doxygen/html/html/search/functions_13.js +58 -58
- package/SVF-doxygen/html/html/search/functions_14.js +38 -38
- package/SVF-doxygen/html/html/search/functions_15.js +71 -71
- package/SVF-doxygen/html/html/search/functions_16.js +29 -29
- package/SVF-doxygen/html/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/html/search/functions_18.js +169 -169
- package/SVF-doxygen/html/html/search/functions_2.js +84 -84
- package/SVF-doxygen/html/html/search/functions_3.js +253 -253
- package/SVF-doxygen/html/html/search/functions_4.js +74 -74
- package/SVF-doxygen/html/html/search/functions_5.js +51 -51
- package/SVF-doxygen/html/html/search/functions_6.js +58 -58
- package/SVF-doxygen/html/html/search/functions_7.js +842 -840
- package/SVF-doxygen/html/html/search/functions_8.js +143 -143
- package/SVF-doxygen/html/html/search/functions_9.js +422 -422
- package/SVF-doxygen/html/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/html/search/functions_c.js +26 -26
- package/SVF-doxygen/html/html/search/functions_d.js +77 -77
- package/SVF-doxygen/html/html/search/functions_e.js +35 -35
- package/SVF-doxygen/html/html/search/functions_f.js +56 -56
- package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/html/search/related_0.js +2 -2
- package/SVF-doxygen/html/html/search/related_1.js +1 -1
- package/SVF-doxygen/html/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/html/search/related_7.js +4 -4
- package/SVF-doxygen/html/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/html/search/related_c.js +1 -1
- package/SVF-doxygen/html/html/search/related_d.js +11 -11
- package/SVF-doxygen/html/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
- package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
- package/SVF-doxygen/html/html/search/typedefs_10.js +62 -60
- package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
- package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
- package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
- package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
- package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
- package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
- package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
- package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
- package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
- package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
- package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
- package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/html/search/variables_0.js +147 -147
- package/SVF-doxygen/html/html/search/variables_1.js +75 -75
- package/SVF-doxygen/html/html/search/variables_10.js +97 -97
- package/SVF-doxygen/html/html/search/variables_11.js +46 -46
- package/SVF-doxygen/html/html/search/variables_12.js +92 -92
- package/SVF-doxygen/html/html/search/variables_13.js +75 -75
- package/SVF-doxygen/html/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/html/search/variables_15.js +48 -48
- package/SVF-doxygen/html/html/search/variables_16.js +9 -9
- package/SVF-doxygen/html/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/html/search/variables_18.js +2 -2
- package/SVF-doxygen/html/html/search/variables_2.js +34 -34
- package/SVF-doxygen/html/html/search/variables_3.js +141 -141
- package/SVF-doxygen/html/html/search/variables_4.js +55 -55
- package/SVF-doxygen/html/html/search/variables_5.js +38 -38
- package/SVF-doxygen/html/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/html/search/variables_7.js +33 -33
- package/SVF-doxygen/html/html/search/variables_8.js +7 -7
- package/SVF-doxygen/html/html/search/variables_9.js +77 -77
- package/SVF-doxygen/html/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/html/search/variables_d.js +56 -56
- package/SVF-doxygen/html/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/html/search/variables_f.js +30 -30
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/package.json +1 -1
- package/svf-llvm/include/SVF-LLVM/BasicTypes.h +4 -0
- package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +49 -0
- package/svf-llvm/lib/LLVMUtil.cpp +37 -0
- package/svf-llvm/lib/SVFIRBuilder.cpp +10 -9
|
@@ -1797,21 +1797,21 @@ Private Attributes</h2></td></tr>
|
|
|
1797
1797
|
<p>Get a base <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> given a pointer Return the source node of its connected normal gep edge Otherwise return the node id itself s32_t offset : gep offset </p>
|
|
1798
1798
|
<p>if this node is already a base node</p>
|
|
1799
1799
|
|
|
1800
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
1801
|
-
<div class="fragment"><div class="line"><a name="
|
|
1802
|
-
<div class="line"><a name="
|
|
1803
|
-
<div class="line"><a name="
|
|
1804
|
-
<div class="line"><a name="
|
|
1805
|
-
<div class="line"><a name="
|
|
1806
|
-
<div class="line"><a name="
|
|
1807
|
-
<div class="line"><a name="
|
|
1808
|
-
<div class="line"><a name="
|
|
1809
|
-
<div class="line"><a name="
|
|
1810
|
-
<div class="line"><a name="
|
|
1811
|
-
<div class="line"><a name="
|
|
1812
|
-
<div class="line"><a name="
|
|
1813
|
-
<div class="line"><a name="
|
|
1814
|
-
<div class="line"><a name="
|
|
1800
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01324">1324</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
1801
|
+
<div class="fragment"><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span> {</div>
|
|
1802
|
+
<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nodeId);</div>
|
|
1803
|
+
<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>& geps = node-><a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div>
|
|
1804
|
+
<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  <span class="keywordflow">if</span>(geps.empty())</div>
|
|
1805
|
+
<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(0);</div>
|
|
1806
|
+
<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  </div>
|
|
1807
|
+
<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  assert(geps.size()==1 && <span class="stringliteral">"one node can only be connected by at most one gep edge!"</span>);</div>
|
|
1808
|
+
<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVFVar::iterator</a> it = geps.begin();</div>
|
|
1809
|
+
<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepEdge = SVFUtil::cast<GepStmt>(*it);</div>
|
|
1810
|
+
<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  <span class="keywordflow">if</span>(gepEdge-><a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div>
|
|
1811
|
+
<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(0);</div>
|
|
1812
|
+
<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  <span class="keywordflow">else</span></div>
|
|
1813
|
+
<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  <span class="keywordflow">return</span> gepEdge-><a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>();</div>
|
|
1814
|
+
<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> }</div>
|
|
1815
1815
|
</div><!-- fragment -->
|
|
1816
1816
|
</div>
|
|
1817
1817
|
</div>
|
|
@@ -1920,59 +1920,59 @@ Private Attributes</h2></td></tr>
|
|
|
1920
1920
|
|
|
1921
1921
|
<p>Get the base value of (i8* src and i8* dst) for external argument (e.g. memcpy(i8* dst, i8* src, int size)) </p>
|
|
1922
1922
|
|
|
1923
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
1924
|
-
<div class="fragment"><div class="line"><a name="
|
|
1925
|
-
<div class="line"><a name="
|
|
1926
|
-
<div class="line"><a name="
|
|
1927
|
-
<div class="line"><a name="
|
|
1928
|
-
<div class="line"><a name="
|
|
1929
|
-
<div class="line"><a name="
|
|
1930
|
-
<div class="line"><a name="
|
|
1931
|
-
<div class="line"><a name="
|
|
1932
|
-
<div class="line"><a name="
|
|
1933
|
-
<div class="line"><a name="
|
|
1934
|
-
<div class="line"><a name="
|
|
1935
|
-
<div class="line"><a name="
|
|
1936
|
-
<div class="line"><a name="
|
|
1937
|
-
<div class="line"><a name="
|
|
1938
|
-
<div class="line"><a name="
|
|
1939
|
-
<div class="line"><a name="
|
|
1940
|
-
<div class="line"><a name="
|
|
1941
|
-
<div class="line"><a name="
|
|
1942
|
-
<div class="line"><a name="
|
|
1943
|
-
<div class="line"><a name="
|
|
1944
|
-
<div class="line"><a name="
|
|
1945
|
-
<div class="line"><a name="
|
|
1946
|
-
<div class="line"><a name="
|
|
1947
|
-
<div class="line"><a name="
|
|
1948
|
-
<div class="line"><a name="
|
|
1949
|
-
<div class="line"><a name="
|
|
1950
|
-
<div class="line"><a name="
|
|
1951
|
-
<div class="line"><a name="
|
|
1952
|
-
<div class="line"><a name="
|
|
1953
|
-
<div class="line"><a name="
|
|
1954
|
-
<div class="line"><a name="
|
|
1955
|
-
<div class="line"><a name="
|
|
1956
|
-
<div class="line"><a name="
|
|
1957
|
-
<div class="line"><a name="
|
|
1958
|
-
<div class="line"><a name="
|
|
1959
|
-
<div class="line"><a name="
|
|
1960
|
-
<div class="line"><a name="
|
|
1961
|
-
<div class="line"><a name="
|
|
1962
|
-
<div class="line"><a name="
|
|
1963
|
-
<div class="line"><a name="
|
|
1964
|
-
<div class="line"><a name="
|
|
1965
|
-
<div class="line"><a name="
|
|
1966
|
-
<div class="line"><a name="
|
|
1967
|
-
<div class="line"><a name="
|
|
1968
|
-
<div class="line"><a name="
|
|
1969
|
-
<div class="line"><a name="
|
|
1970
|
-
<div class="line"><a name="
|
|
1971
|
-
<div class="line"><a name="
|
|
1972
|
-
<div class="line"><a name="
|
|
1973
|
-
<div class="line"><a name="
|
|
1974
|
-
<div class="line"><a name="
|
|
1975
|
-
<div class="line"><a name="
|
|
1923
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01063">1063</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
1924
|
+
<div class="fragment"><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> {</div>
|
|
1925
|
+
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">stripAllCasts</a>(V);</div>
|
|
1926
|
+
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  assert(value && <span class="stringliteral">"null ptr?"</span>);</div>
|
|
1927
|
+
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gep = SVFUtil::dyn_cast<GetElementPtrInst>(value))</div>
|
|
1928
|
+
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  {</div>
|
|
1929
|
+
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalidx = 0;</div>
|
|
1930
|
+
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1generic__bridge__gep__type__iterator.html">bridge_gep_iterator</a> gi = <a class="code" href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">bridge_gep_begin</a>(gep), ge = <a class="code" href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">bridge_gep_end</a>(gep); gi != ge; ++gi)</div>
|
|
1931
|
+
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  {</div>
|
|
1932
|
+
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* op = SVFUtil::dyn_cast<ConstantInt>(gi.getOperand()))</div>
|
|
1933
|
+
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  totalidx += op->getSExtValue();</div>
|
|
1934
|
+
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  }</div>
|
|
1935
|
+
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="keywordflow">if</span>(totalidx == 0 && !SVFUtil::isa<StructType>(value->getType()))</div>
|
|
1936
|
+
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  value = gep->getPointerOperand();</div>
|
|
1937
|
+
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  }</div>
|
|
1938
|
+
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  </div>
|
|
1939
|
+
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <span class="comment">// if the argument of memcpy is the result of an allocation (1) or a casted load instruction (2),</span></div>
|
|
1940
|
+
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  <span class="comment">// further steps are necessary to find the correct base value</span></div>
|
|
1941
|
+
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <span class="comment">//</span></div>
|
|
1942
|
+
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <span class="comment">// (1)</span></div>
|
|
1943
|
+
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  <span class="comment">// %call = malloc 80</span></div>
|
|
1944
|
+
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <span class="comment">// %0 = bitcast i8* %call to %struct.A*</span></div>
|
|
1945
|
+
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  <span class="comment">// %1 = bitcast %struct.B* %param to i8*</span></div>
|
|
1946
|
+
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <span class="comment">// call void memcpy(%call, %1, 80)</span></div>
|
|
1947
|
+
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  <span class="comment">//</span></div>
|
|
1948
|
+
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  <span class="comment">// (2)</span></div>
|
|
1949
|
+
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  <span class="comment">// %0 = bitcast %struct.A* %param to i8*</span></div>
|
|
1950
|
+
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <span class="comment">// %2 = bitcast %struct.B** %arrayidx to i8**</span></div>
|
|
1951
|
+
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="comment">// %3 = load i8*, i8** %2</span></div>
|
|
1952
|
+
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <span class="comment">// call void @memcpy(%0, %3, 80)</span></div>
|
|
1953
|
+
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">LLVMContext</a> &cxt = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>();</div>
|
|
1954
|
+
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <span class="keywordflow">if</span> (value->getType() == PointerType::getInt8PtrTy(cxt))</div>
|
|
1955
|
+
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  {</div>
|
|
1956
|
+
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <span class="comment">// (1)</span></div>
|
|
1957
|
+
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cb = SVFUtil::dyn_cast<CallBase>(value))</div>
|
|
1958
|
+
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  {</div>
|
|
1959
|
+
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(cb);</div>
|
|
1960
|
+
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfInst))</div>
|
|
1961
|
+
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  {</div>
|
|
1962
|
+
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* bitCast = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">getUniqueUseViaCastInst</a>(cb))</div>
|
|
1963
|
+
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <span class="keywordflow">return</span> bitCast;</div>
|
|
1964
|
+
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  }</div>
|
|
1965
|
+
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  }</div>
|
|
1966
|
+
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <span class="comment">// (2)</span></div>
|
|
1967
|
+
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = SVFUtil::dyn_cast<LoadInst>(value))</div>
|
|
1968
|
+
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  {</div>
|
|
1969
|
+
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">BitCastInst</a>* bitCast = SVFUtil::dyn_cast<BitCastInst>(load->getPointerOperand()))</div>
|
|
1970
|
+
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  <span class="keywordflow">return</span> bitCast->getOperand(0);</div>
|
|
1971
|
+
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  }</div>
|
|
1972
|
+
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  }</div>
|
|
1973
|
+
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  </div>
|
|
1974
|
+
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <span class="keywordflow">return</span> value;</div>
|
|
1975
|
+
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> }</div>
|
|
1976
1976
|
</div><!-- fragment -->
|
|
1977
1977
|
</div>
|
|
1978
1978
|
</div>
|
|
@@ -2077,37 +2077,37 @@ Private Attributes</h2></td></tr>
|
|
|
2077
2077
|
</div><div class="memdoc">
|
|
2078
2078
|
<p>Add a temp field value node according to base value and offset this node is after the initial node method, it is out of scope of symInfo table </p>
|
|
2079
2079
|
|
|
2080
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
2081
|
-
<div class="fragment"><div class="line"><a name="
|
|
2082
|
-
<div class="line"><a name="
|
|
2083
|
-
<div class="line"><a name="
|
|
2084
|
-
<div class="line"><a name="
|
|
2085
|
-
<div class="line"><a name="
|
|
2086
|
-
<div class="line"><a name="
|
|
2087
|
-
<div class="line"><a name="
|
|
2088
|
-
<div class="line"><a name="
|
|
2089
|
-
<div class="line"><a name="
|
|
2090
|
-
<div class="line"><a name="
|
|
2091
|
-
<div class="line"><a name="
|
|
2092
|
-
<div class="line"><a name="
|
|
2093
|
-
<div class="line"><a name="
|
|
2094
|
-
<div class="line"><a name="
|
|
2095
|
-
<div class="line"><a name="
|
|
2096
|
-
<div class="line"><a name="
|
|
2097
|
-
<div class="line"><a name="
|
|
2098
|
-
<div class="line"><a name="
|
|
2099
|
-
<div class="line"><a name="
|
|
2100
|
-
<div class="line"><a name="
|
|
2101
|
-
<div class="line"><a name="
|
|
2102
|
-
<div class="line"><a name="
|
|
2103
|
-
<div class="line"><a name="
|
|
2104
|
-
<div class="line"><a name="
|
|
2105
|
-
<div class="line"><a name="
|
|
2106
|
-
<div class="line"><a name="
|
|
2107
|
-
<div class="line"><a name="
|
|
2108
|
-
<div class="line"><a name="
|
|
2109
|
-
<div class="line"><a name="
|
|
2110
|
-
<div class="line"><a name="
|
|
2080
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01191">1191</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
2081
|
+
<div class="fragment"><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> {</div>
|
|
2082
|
+
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">getBaseValVar</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(val));</div>
|
|
2083
|
+
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#ad0977d55d947bdccd98d61c66d3f0cc7">getGepValVar</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, base, ap);</div>
|
|
2084
|
+
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <span class="keywordflow">if</span> (gepval==UINT_MAX)</div>
|
|
2085
|
+
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  {</div>
|
|
2086
|
+
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  assert(((<span class="keywordtype">int</span>) UINT_MAX)==-1 && <span class="stringliteral">"maximum limit of unsigned int is not -1?"</span>);</div>
|
|
2087
|
+
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  <span class="comment">/*</span></div>
|
|
2088
|
+
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> <span class="comment"> * getGepValVar can only be called from two places:</span></div>
|
|
2089
|
+
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> <span class="comment"> * 1. SVFIRBuilder::addComplexConsForExt to handle external calls</span></div>
|
|
2090
|
+
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span> <span class="comment"> * 2. SVFIRBuilder::getGlobalVarField to initialize global variable</span></div>
|
|
2091
|
+
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span> <span class="comment"> * so curVal can only be</span></div>
|
|
2092
|
+
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span> <span class="comment"> * 1. Instruction</span></div>
|
|
2093
|
+
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span> <span class="comment"> * 2. GlobalVariable</span></div>
|
|
2094
|
+
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span> <span class="comment"> */</span></div>
|
|
2095
|
+
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  assert((SVFUtil::isa<SVFInstruction, SVFGlobalValue>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>)) && <span class="stringliteral">"curVal not an instruction or a globalvariable?"</span>);</div>
|
|
2096
|
+
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  </div>
|
|
2097
|
+
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  <span class="comment">// We assume every GepValNode and its GepEdge to the baseNode are unique across the whole program</span></div>
|
|
2098
|
+
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  <span class="comment">// We preserve the current BB information to restore it after creating the gepNode</span></div>
|
|
2099
|
+
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
|
|
2100
|
+
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
|
|
2101
|
+
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, <span class="keyword">nullptr</span>);</div>
|
|
2102
|
+
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* llvmmodule = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>();</div>
|
|
2103
|
+
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepNode= <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a555e6d530c37b23e1e43925aa188385f">addGepValNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, llvmmodule-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(val),ap, <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-><a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>(),elementType-><a class="code" href="classSVF_1_1SVFType.html#a3672b4797c400aac90c6d36ce29e0e57">getPointerTo</a>());</div>
|
|
2104
|
+
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4e1b6797df3e7b98da876f50741e6a3a">addGepEdge</a>(base, gepNode, ap, <span class="keyword">true</span>);</div>
|
|
2105
|
+
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
|
|
2106
|
+
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  <span class="keywordflow">return</span> gepNode;</div>
|
|
2107
|
+
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  }</div>
|
|
2108
|
+
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <span class="keywordflow">else</span></div>
|
|
2109
|
+
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  <span class="keywordflow">return</span> gepval;</div>
|
|
2110
|
+
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> }</div>
|
|
2111
2111
|
</div><!-- fragment -->
|
|
2112
2112
|
</div>
|
|
2113
2113
|
</div>
|
|
@@ -2377,69 +2377,69 @@ Private Attributes</h2></td></tr>
|
|
|
2377
2377
|
<p>Add the constraints for a direct, non-external call. </p>
|
|
2378
2378
|
<p>FIXME: this assertion should be placed for correct checking except bug program like 188.ammp, 300.twolf</p>
|
|
2379
2379
|
|
|
2380
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
2381
|
-
<div class="fragment"><div class="line"><a name="
|
|
2382
|
-
<div class="line"><a name="
|
|
2383
|
-
<div class="line"><a name="
|
|
2384
|
-
<div class="line"><a name="
|
|
2385
|
-
<div class="line"><a name="
|
|
2386
|
-
<div class="line"><a name="
|
|
2387
|
-
<div class="line"><a name="
|
|
2388
|
-
<div class="line"><a name="
|
|
2389
|
-
<div class="line"><a name="
|
|
2390
|
-
<div class="line"><a name="
|
|
2391
|
-
<div class="line"><a name="
|
|
2392
|
-
<div class="line"><a name="
|
|
2393
|
-
<div class="line"><a name="
|
|
2394
|
-
<div class="line"><a name="
|
|
2395
|
-
<div class="line"><a name="
|
|
2396
|
-
<div class="line"><a name="
|
|
2397
|
-
<div class="line"><a name="
|
|
2398
|
-
<div class="line"><a name="
|
|
2399
|
-
<div class="line"><a name="
|
|
2400
|
-
<div class="line"><a name="
|
|
2401
|
-
<div class="line"><a name="
|
|
2402
|
-
<div class="line"><a name="
|
|
2403
|
-
<div class="line"><a name="
|
|
2404
|
-
<div class="line"><a name="
|
|
2405
|
-
<div class="line"><a name="
|
|
2406
|
-
<div class="line"><a name="
|
|
2407
|
-
<div class="line"><a name="
|
|
2408
|
-
<div class="line"><a name="
|
|
2409
|
-
<div class="line"><a name="
|
|
2410
|
-
<div class="line"><a name="
|
|
2411
|
-
<div class="line"><a name="
|
|
2412
|
-
<div class="line"><a name="
|
|
2413
|
-
<div class="line"><a name="
|
|
2414
|
-
<div class="line"><a name="
|
|
2415
|
-
<div class="line"><a name="
|
|
2416
|
-
<div class="line"><a name="
|
|
2417
|
-
<div class="line"><a name="
|
|
2418
|
-
<div class="line"><a name="
|
|
2419
|
-
<div class="line"><a name="
|
|
2420
|
-
<div class="line"><a name="
|
|
2421
|
-
<div class="line"><a name="
|
|
2422
|
-
<div class="line"><a name="
|
|
2423
|
-
<div class="line"><a name="
|
|
2424
|
-
<div class="line"><a name="
|
|
2425
|
-
<div class="line"><a name="
|
|
2426
|
-
<div class="line"><a name="
|
|
2427
|
-
<div class="line"><a name="
|
|
2428
|
-
<div class="line"><a name="
|
|
2429
|
-
<div class="line"><a name="
|
|
2430
|
-
<div class="line"><a name="
|
|
2431
|
-
<div class="line"><a name="
|
|
2432
|
-
<div class="line"><a name="
|
|
2433
|
-
<div class="line"><a name="
|
|
2434
|
-
<div class="line"><a name="
|
|
2435
|
-
<div class="line"><a name="
|
|
2436
|
-
<div class="line"><a name="
|
|
2437
|
-
<div class="line"><a name="
|
|
2438
|
-
<div class="line"><a name="
|
|
2439
|
-
<div class="line"><a name="
|
|
2440
|
-
<div class="line"><a name="
|
|
2441
|
-
<div class="line"><a name="
|
|
2442
|
-
<div class="line"><a name="
|
|
2380
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00997">997</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
2381
|
+
<div class="fragment"><div class="line"><a name="l00998"></a><span class="lineno"> 998</span> {</div>
|
|
2382
|
+
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  </div>
|
|
2383
|
+
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
|
|
2384
|
+
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(cs);</div>
|
|
2385
|
+
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
|
|
2386
|
+
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div>
|
|
2387
|
+
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"handle direct call "</span> << svfcall-><a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">toString</a>() << <span class="stringliteral">" callee "</span> << <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getName().str() << <span class="stringliteral">"\n"</span>);</div>
|
|
2388
|
+
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  </div>
|
|
2389
|
+
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <span class="comment">//Only handle the ret.val. if it's used as a ptr.</span></div>
|
|
2390
|
+
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstrec = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs);</div>
|
|
2391
|
+
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  <span class="comment">//Does it actually return a ptr?</span></div>
|
|
2392
|
+
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordflow">if</span> (!cs->getType()->isVoidTy())</div>
|
|
2393
|
+
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  {</div>
|
|
2394
|
+
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcret = <a class="code" href="classSVF_1_1SVFIRBuilder.html#aff99c8de4acf4eeaf01803dadf459b92">getReturnNode</a>(svffun);</div>
|
|
2395
|
+
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callICFGNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
|
|
2396
|
+
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* exitICFGNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(svffun);</div>
|
|
2397
|
+
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a89e8cc23aad23d2c326b4a5ff12535ca">addRetEdge</a>(srcret, dstrec,callICFGNode, exitICFGNode);</div>
|
|
2398
|
+
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  }</div>
|
|
2399
|
+
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <span class="comment">//Iterators for the actual and formal parameters</span></div>
|
|
2400
|
+
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> itA = 0, ieA = cs->arg_size();</div>
|
|
2401
|
+
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  Function::const_arg_iterator itF = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->arg_begin(), ieF = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->arg_end();</div>
|
|
2402
|
+
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="comment">//Go through the fixed parameters.</span></div>
|
|
2403
|
+
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" args:"</span>);</div>
|
|
2404
|
+
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <span class="keywordflow">for</span> (; itF != ieF; ++itA, ++itF)</div>
|
|
2405
|
+
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  {</div>
|
|
2406
|
+
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <span class="comment">//Some programs (e.g. Linux kernel) leave unneeded parameters empty.</span></div>
|
|
2407
|
+
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <span class="keywordflow">if</span> (itA == ieA)</div>
|
|
2408
|
+
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  {</div>
|
|
2409
|
+
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" !! not enough args\n"</span>);</div>
|
|
2410
|
+
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <span class="keywordflow">break</span>;</div>
|
|
2411
|
+
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  }</div>
|
|
2412
|
+
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* AA = cs->getArgOperand(itA), *FA = &*itF; <span class="comment">//current actual/formal arg</span></div>
|
|
2413
|
+
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  </div>
|
|
2414
|
+
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process actual parm "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(AA)->toString() << <span class="stringliteral">" \n"</span>);</div>
|
|
2415
|
+
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  </div>
|
|
2416
|
+
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstFA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(FA);</div>
|
|
2417
|
+
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcAA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(AA);</div>
|
|
2418
|
+
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
|
|
2419
|
+
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(svffun);</div>
|
|
2420
|
+
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#abaf03c3031ef3940c73e3cd8e8ca17b6">addCallEdge</a>(srcAA, dstFA, icfgNode, entry);</div>
|
|
2421
|
+
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  }</div>
|
|
2422
|
+
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <span class="comment">//Any remaining actual args must be varargs.</span></div>
|
|
2423
|
+
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->isVarArg())</div>
|
|
2424
|
+
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  {</div>
|
|
2425
|
+
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vaF = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3fe99644b2bf5f0f9b2b21a56a400ad4">getVarargNode</a>(svffun);</div>
|
|
2426
|
+
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\n varargs:"</span>);</div>
|
|
2427
|
+
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keywordflow">for</span> (; itA != ieA; ++itA)</div>
|
|
2428
|
+
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  {</div>
|
|
2429
|
+
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* AA = cs->getArgOperand(itA);</div>
|
|
2430
|
+
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnAA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(AA);</div>
|
|
2431
|
+
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
|
|
2432
|
+
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(svffun);</div>
|
|
2433
|
+
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#abaf03c3031ef3940c73e3cd8e8ca17b6">addCallEdge</a>(vnAA,vaF, icfgNode,entry);</div>
|
|
2434
|
+
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  }</div>
|
|
2435
|
+
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  }</div>
|
|
2436
|
+
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  <span class="keywordflow">if</span>(itA != ieA)</div>
|
|
2437
|
+
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  {</div>
|
|
2438
|
+
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">"too many args to non-vararg func."</span>);</div>
|
|
2439
|
+
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">"("</span> + svfcall-><a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>() + <span class="stringliteral">")"</span>);</div>
|
|
2440
|
+
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  </div>
|
|
2441
|
+
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  }</div>
|
|
2442
|
+
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> }</div>
|
|
2443
2443
|
</div><!-- fragment -->
|
|
2444
2444
|
</div>
|
|
2445
2445
|
</div>
|
|
@@ -2689,14 +2689,14 @@ Private Attributes</h2></td></tr>
|
|
|
2689
2689
|
<p>Handle indirect call. </p>
|
|
2690
2690
|
<p>Indirect call is resolved on-the-fly during pointer analysis </p>
|
|
2691
2691
|
|
|
2692
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
2693
|
-
<div class="fragment"><div class="line"><a name="
|
|
2694
|
-
<div class="line"><a name="
|
|
2695
|
-
<div class="line"><a name="
|
|
2696
|
-
<div class="line"><a name="
|
|
2697
|
-
<div class="line"><a name="
|
|
2698
|
-
<div class="line"><a name="
|
|
2699
|
-
<div class="line"><a name="
|
|
2692
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01120">1120</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
2693
|
+
<div class="fragment"><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span> {</div>
|
|
2694
|
+
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(cs);</div>
|
|
2695
|
+
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfcalledval = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(cs->getCalledOperand());</div>
|
|
2696
|
+
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  </div>
|
|
2697
|
+
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
|
|
2698
|
+
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#af4a5fd9ecddb1447207335917adccd68">addIndirectCallsites</a>(cbn,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(svfcalledval));</div>
|
|
2699
|
+
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> }</div>
|
|
2700
2700
|
</div><!-- fragment -->
|
|
2701
2701
|
</div>
|
|
2702
2702
|
</div>
|
|
@@ -3124,26 +3124,26 @@ Private Attributes</h2></td></tr>
|
|
|
3124
3124
|
|
|
3125
3125
|
<p>Sanity check for <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a>. </p>
|
|
3126
3126
|
|
|
3127
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3128
|
-
<div class="fragment"><div class="line"><a name="
|
|
3129
|
-
<div class="line"><a name="
|
|
3130
|
-
<div class="line"><a name="
|
|
3131
|
-
<div class="line"><a name="
|
|
3132
|
-
<div class="line"><a name="
|
|
3133
|
-
<div class="line"><a name="
|
|
3134
|
-
<div class="line"><a name="
|
|
3135
|
-
<div class="line"><a name="
|
|
3136
|
-
<div class="line"><a name="
|
|
3137
|
-
<div class="line"><a name="
|
|
3138
|
-
<div class="line"><a name="
|
|
3139
|
-
<div class="line"><a name="
|
|
3140
|
-
<div class="line"><a name="
|
|
3141
|
-
<div class="line"><a name="
|
|
3142
|
-
<div class="line"><a name="
|
|
3143
|
-
<div class="line"><a name="
|
|
3144
|
-
<div class="line"><a name="
|
|
3145
|
-
<div class="line"><a name="
|
|
3146
|
-
<div class="line"><a name="
|
|
3127
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01165">1165</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3128
|
+
<div class="fragment"><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> {</div>
|
|
3129
|
+
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> nIter = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); nIter != <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++nIter)</div>
|
|
3130
|
+
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  {</div>
|
|
3131
|
+
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  (void) <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nIter->first);</div>
|
|
3132
|
+
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <span class="comment">//TODO::</span></div>
|
|
3133
|
+
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  <span class="comment">// (1) every source(root) node of a pag tree should be object node</span></div>
|
|
3134
|
+
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <span class="comment">// if a node has no incoming edge, but has outgoing edges</span></div>
|
|
3135
|
+
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <span class="comment">// then it has to be an object node.</span></div>
|
|
3136
|
+
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <span class="comment">// (2) make sure every variable should be initialized</span></div>
|
|
3137
|
+
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <span class="comment">// otherwise it causes the a null pointer, the aliasing relation may not be captured</span></div>
|
|
3138
|
+
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <span class="comment">// when loading a pointer value should make sure</span></div>
|
|
3139
|
+
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  <span class="comment">// some value has been store into this pointer before</span></div>
|
|
3140
|
+
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <span class="comment">// q = load p, some value should stored into p first like store w p;</span></div>
|
|
3141
|
+
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <span class="comment">// (3) make sure PAGNode should not have a const expr value (pointer should have unique def)</span></div>
|
|
3142
|
+
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  <span class="comment">// (4) look closely into addComplexConsForExt, make sure program locations(e.g.,inst bb)</span></div>
|
|
3143
|
+
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="comment">// are set correctly for dummy gepval node</span></div>
|
|
3144
|
+
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  <span class="comment">// (5) reduce unnecessary copy edge (const casts) and ensure correctness.</span></div>
|
|
3145
|
+
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  }</div>
|
|
3146
|
+
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> }</div>
|
|
3147
3147
|
</div><!-- fragment -->
|
|
3148
3148
|
</div>
|
|
3149
3149
|
</div>
|
|
@@ -3173,83 +3173,83 @@ Private Attributes</h2></td></tr>
|
|
|
3173
3173
|
<p>We assume every <a class="el" href="classSVF_1_1GepValVar.html">GepValVar</a> and its <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> are unique across whole program</p>
|
|
3174
3174
|
<p>We will have one unique function exit <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> for all returns</p>
|
|
3175
3175
|
|
|
3176
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3177
|
-
<div class="fragment"><div class="line"><a name="
|
|
3178
|
-
<div class="line"><a name="
|
|
3179
|
-
<div class="line"><a name="
|
|
3180
|
-
<div class="line"><a name="
|
|
3181
|
-
<div class="line"><a name="
|
|
3182
|
-
<div class="line"><a name="
|
|
3183
|
-
<div class="line"><a name="
|
|
3184
|
-
<div class="line"><a name="
|
|
3185
|
-
<div class="line"><a name="
|
|
3186
|
-
<div class="line"><a name="
|
|
3187
|
-
<div class="line"><a name="
|
|
3188
|
-
<div class="line"><a name="
|
|
3189
|
-
<div class="line"><a name="
|
|
3190
|
-
<div class="line"><a name="
|
|
3191
|
-
<div class="line"><a name="
|
|
3192
|
-
<div class="line"><a name="
|
|
3193
|
-
<div class="line"><a name="
|
|
3194
|
-
<div class="line"><a name="
|
|
3195
|
-
<div class="line"><a name="
|
|
3196
|
-
<div class="line"><a name="
|
|
3197
|
-
<div class="line"><a name="
|
|
3198
|
-
<div class="line"><a name="
|
|
3199
|
-
<div class="line"><a name="
|
|
3200
|
-
<div class="line"><a name="
|
|
3201
|
-
<div class="line"><a name="
|
|
3202
|
-
<div class="line"><a name="
|
|
3203
|
-
<div class="line"><a name="
|
|
3204
|
-
<div class="line"><a name="
|
|
3205
|
-
<div class="line"><a name="
|
|
3206
|
-
<div class="line"><a name="
|
|
3207
|
-
<div class="line"><a name="
|
|
3208
|
-
<div class="line"><a name="
|
|
3209
|
-
<div class="line"><a name="
|
|
3210
|
-
<div class="line"><a name="
|
|
3211
|
-
<div class="line"><a name="
|
|
3212
|
-
<div class="line"><a name="
|
|
3213
|
-
<div class="line"><a name="
|
|
3214
|
-
<div class="line"><a name="
|
|
3215
|
-
<div class="line"><a name="
|
|
3216
|
-
<div class="line"><a name="
|
|
3217
|
-
<div class="line"><a name="
|
|
3218
|
-
<div class="line"><a name="
|
|
3219
|
-
<div class="line"><a name="
|
|
3220
|
-
<div class="line"><a name="
|
|
3221
|
-
<div class="line"><a name="
|
|
3222
|
-
<div class="line"><a name="
|
|
3223
|
-
<div class="line"><a name="
|
|
3224
|
-
<div class="line"><a name="
|
|
3225
|
-
<div class="line"><a name="
|
|
3226
|
-
<div class="line"><a name="
|
|
3227
|
-
<div class="line"><a name="
|
|
3228
|
-
<div class="line"><a name="
|
|
3229
|
-
<div class="line"><a name="
|
|
3230
|
-
<div class="line"><a name="
|
|
3231
|
-
<div class="line"><a name="
|
|
3232
|
-
<div class="line"><a name="
|
|
3233
|
-
<div class="line"><a name="
|
|
3234
|
-
<div class="line"><a name="
|
|
3235
|
-
<div class="line"><a name="
|
|
3236
|
-
<div class="line"><a name="
|
|
3237
|
-
<div class="line"><a name="
|
|
3238
|
-
<div class="line"><a name="
|
|
3239
|
-
<div class="line"><a name="
|
|
3240
|
-
<div class="line"><a name="
|
|
3241
|
-
<div class="line"><a name="
|
|
3242
|
-
<div class="line"><a name="
|
|
3243
|
-
<div class="line"><a name="
|
|
3244
|
-
<div class="line"><a name="
|
|
3245
|
-
<div class="line"><a name="
|
|
3246
|
-
<div class="line"><a name="
|
|
3247
|
-
<div class="line"><a name="
|
|
3248
|
-
<div class="line"><a name="
|
|
3249
|
-
<div class="line"><a name="
|
|
3250
|
-
<div class="line"><a name="
|
|
3251
|
-
<div class="line"><a name="
|
|
3252
|
-
<div class="line"><a name="
|
|
3176
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01237">1237</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3177
|
+
<div class="fragment"><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> {</div>
|
|
3178
|
+
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</div>
|
|
3179
|
+
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  <span class="keywordflow">return</span>;</div>
|
|
3180
|
+
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  </div>
|
|
3181
|
+
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  assert(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a> && <span class="stringliteral">"current Val is nullptr?"</span>);</div>
|
|
3182
|
+
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  edge-><a class="code" href="classSVF_1_1SVFStmt.html#a0e45ab5b38059371c47d5f2011118a4d">setBB</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>!=<span class="keyword">nullptr</span> ? <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a> : <span class="keyword">nullptr</span>);</div>
|
|
3183
|
+
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  edge-><a class="code" href="classSVF_1_1SVFStmt.html#a6ae58a22d43361904c7033f5c790da38">setValue</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>);</div>
|
|
3184
|
+
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  <span class="comment">// backmap in valuToEdgeMap</span></div>
|
|
3185
|
+
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a51201a8fce21b56e3f59a31af04c7b76">mapValueToEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, edge);</div>
|
|
3186
|
+
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#ae0b05ce161d62362642803158228e5d0">getGlobalICFGNode</a>();</div>
|
|
3187
|
+
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* curInst = SVFUtil::dyn_cast<SVFInstruction>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>))</div>
|
|
3188
|
+
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  {</div>
|
|
3189
|
+
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* srcFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction();</div>
|
|
3190
|
+
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* dstFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction();</div>
|
|
3191
|
+
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  <span class="keywordflow">if</span>(srcFun!=<span class="keyword">nullptr</span> && !SVFUtil::isa<RetPE>(edge) && !SVFUtil::isa<SVFFunction>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getValue()))</div>
|
|
3192
|
+
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  {</div>
|
|
3193
|
+
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  assert(srcFun==curInst->getFunction() && <span class="stringliteral">"SrcNode of the PAGEdge not in the same function?"</span>);</div>
|
|
3194
|
+
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  }</div>
|
|
3195
|
+
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  <span class="keywordflow">if</span>(dstFun!=<span class="keyword">nullptr</span> && !SVFUtil::isa<CallPE>(edge) && !SVFUtil::isa<SVFFunction>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getValue()))</div>
|
|
3196
|
+
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  {</div>
|
|
3197
|
+
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  assert(dstFun==curInst->getFunction() && <span class="stringliteral">"DstNode of the PAGEdge not in the same function?"</span>);</div>
|
|
3198
|
+
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  }</div>
|
|
3199
|
+
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  </div>
|
|
3200
|
+
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="keywordflow">if</span> (!(SVFUtil::isa<GepStmt>(edge) && SVFUtil::isa<GepValVar>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>())))</div>
|
|
3201
|
+
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  assert(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a> && <span class="stringliteral">"instruction does not have a basic block??"</span>);</div>
|
|
3202
|
+
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  </div>
|
|
3203
|
+
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  <span class="keywordflow">if</span>(curInst->isRetInst())</div>
|
|
3204
|
+
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  {</div>
|
|
3205
|
+
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(curInst->getFunction());</div>
|
|
3206
|
+
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  }</div>
|
|
3207
|
+
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  <span class="keywordflow">else</span></div>
|
|
3208
|
+
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  {</div>
|
|
3209
|
+
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  <span class="keywordflow">if</span>(SVFUtil::isa<RetPE>(edge))</div>
|
|
3210
|
+
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">getRetICFGNode</a>(curInst);</div>
|
|
3211
|
+
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <span class="keywordflow">else</span></div>
|
|
3212
|
+
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(curInst);</div>
|
|
3213
|
+
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  }</div>
|
|
3214
|
+
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  }</div>
|
|
3215
|
+
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* arg = SVFUtil::dyn_cast<SVFArgument>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>))</div>
|
|
3216
|
+
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  {</div>
|
|
3217
|
+
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  assert(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a> && (<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>-><a class="code" href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">getParent</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">getEntryBlock</a>() == <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>));</div>
|
|
3218
|
+
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(arg->getParent());</div>
|
|
3219
|
+
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  }</div>
|
|
3220
|
+
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<SVFConstant>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>) ||</div>
|
|
3221
|
+
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  SVFUtil::isa<SVFFunction>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>) ||</div>
|
|
3222
|
+
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  SVFUtil::isa<SVFMetadataAsValue>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>))</div>
|
|
3223
|
+
<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  {</div>
|
|
3224
|
+
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>)</div>
|
|
3225
|
+
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">addGlobalPAGEdge</a>(edge);</div>
|
|
3226
|
+
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  <span class="keywordflow">else</span></div>
|
|
3227
|
+
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  {</div>
|
|
3228
|
+
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>-><a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>());</div>
|
|
3229
|
+
<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  }</div>
|
|
3230
|
+
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  }</div>
|
|
3231
|
+
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  <span class="keywordflow">else</span></div>
|
|
3232
|
+
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  {</div>
|
|
3233
|
+
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"what else value can we have?"</span>);</div>
|
|
3234
|
+
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  }</div>
|
|
3235
|
+
<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  </div>
|
|
3236
|
+
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a6a84868ab4e2845e884fba08d82b40f6">addToSVFStmtList</a>(icfgNode,edge);</div>
|
|
3237
|
+
<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  icfgNode-><a class="code" href="classSVF_1_1ICFGNode.html#a8a133398c691ab3639ceefbc57cd33be">addSVFStmt</a>(edge);</div>
|
|
3238
|
+
<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* callPE = SVFUtil::dyn_cast<CallPE>(edge))</div>
|
|
3239
|
+
<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  {</div>
|
|
3240
|
+
<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callNode = <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>*<span class="keyword">></span>(callPE->getCallSite());</div>
|
|
3241
|
+
<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entryNode = <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>*<span class="keyword">></span>(callPE->getFunEntryICFGNode());</div>
|
|
3242
|
+
<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(callNode,entryNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e">ICFGEdge::CallCF</a>))</div>
|
|
3243
|
+
<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  SVFUtil::cast<CallCFGEdge>(edge)->addCallPE(callPE);</div>
|
|
3244
|
+
<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  }</div>
|
|
3245
|
+
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* retPE = SVFUtil::dyn_cast<RetPE>(edge))</div>
|
|
3246
|
+
<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  {</div>
|
|
3247
|
+
<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retNode = <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>*<span class="keyword">></span>(retPE->getCallSite()->getRetICFGNode());</div>
|
|
3248
|
+
<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* exitNode = <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>*<span class="keyword">></span>(retPE->getFunExitICFGNode());</div>
|
|
3249
|
+
<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(exitNode, retNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">ICFGEdge::RetCF</a>))</div>
|
|
3250
|
+
<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  SVFUtil::cast<RetCFGEdge>(edge)->addRetPE(retPE);</div>
|
|
3251
|
+
<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  }</div>
|
|
3252
|
+
<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> }</div>
|
|
3253
3253
|
</div><!-- fragment -->
|
|
3254
3254
|
</div>
|
|
3255
3255
|
</div>
|
|
@@ -3357,38 +3357,38 @@ Private Attributes</h2></td></tr>
|
|
|
3357
3357
|
|
|
3358
3358
|
<p>connect PAG edges based on callgraph </p>
|
|
3359
3359
|
|
|
3360
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3361
|
-
<div class="fragment"><div class="line"><a name="
|
|
3362
|
-
<div class="line"><a name="
|
|
3363
|
-
<div class="line"><a name="
|
|
3364
|
-
<div class="line"><a name="
|
|
3365
|
-
<div class="line"><a name="
|
|
3366
|
-
<div class="line"><a name="
|
|
3367
|
-
<div class="line"><a name="
|
|
3368
|
-
<div class="line"><a name="
|
|
3369
|
-
<div class="line"><a name="
|
|
3370
|
-
<div class="line"><a name="
|
|
3371
|
-
<div class="line"><a name="
|
|
3372
|
-
<div class="line"><a name="
|
|
3373
|
-
<div class="line"><a name="
|
|
3374
|
-
<div class="line"><a name="
|
|
3375
|
-
<div class="line"><a name="
|
|
3376
|
-
<div class="line"><a name="
|
|
3377
|
-
<div class="line"><a name="
|
|
3378
|
-
<div class="line"><a name="
|
|
3379
|
-
<div class="line"><a name="
|
|
3380
|
-
<div class="line"><a name="
|
|
3381
|
-
<div class="line"><a name="
|
|
3382
|
-
<div class="line"><a name="
|
|
3383
|
-
<div class="line"><a name="
|
|
3384
|
-
<div class="line"><a name="
|
|
3385
|
-
<div class="line"><a name="
|
|
3386
|
-
<div class="line"><a name="
|
|
3387
|
-
<div class="line"><a name="
|
|
3388
|
-
<div class="line"><a name="
|
|
3389
|
-
<div class="line"><a name="
|
|
3390
|
-
<div class="line"><a name="
|
|
3391
|
-
<div class="line"><a name="
|
|
3360
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01129">1129</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3361
|
+
<div class="fragment"><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span> {</div>
|
|
3362
|
+
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  PTACallGraph::CallEdgeMap::const_iterator iter = callgraph-><a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().begin();</div>
|
|
3363
|
+
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  PTACallGraph::CallEdgeMap::const_iterator eiter = callgraph-><a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().end();</div>
|
|
3364
|
+
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  <span class="keywordflow">for</span> (; iter != eiter; iter++)</div>
|
|
3365
|
+
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  {</div>
|
|
3366
|
+
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlock = iter->first;</div>
|
|
3367
|
+
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::cast<CallBase>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getLLVMValue(callBlock-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()));</div>
|
|
3368
|
+
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  assert(callBlock-><a class="code" href="classSVF_1_1CallICFGNode.html#aa11226a2e4fa6a7b1d78006cc8ca0518">isIndirectCall</a>() && <span class="stringliteral">"this is not an indirect call?"</span>);</div>
|
|
3369
|
+
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a>& functions = iter->second;</div>
|
|
3370
|
+
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  <span class="keywordflow">for</span> (PTACallGraph::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)</div>
|
|
3371
|
+
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  {</div>
|
|
3372
|
+
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = SVFUtil::cast<Function>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getLLVMValue(*func_iter));</div>
|
|
3373
|
+
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  </div>
|
|
3374
|
+
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(*func_iter))</div>
|
|
3375
|
+
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  {</div>
|
|
3376
|
+
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(callee, callee->empty() ? <span class="keyword">nullptr</span> : &callee->getEntryBlock());</div>
|
|
3377
|
+
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(callee);</div>
|
|
3378
|
+
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8b664a9d689562bd857f056e6e08c59b">handleExtCall</a>(callbase, svfcallee);</div>
|
|
3379
|
+
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  }</div>
|
|
3380
|
+
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <span class="keywordflow">else</span></div>
|
|
3381
|
+
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  {</div>
|
|
3382
|
+
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(callBlock-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>(), callBlock-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()-><a class="code" href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">getParent</a>());</div>
|
|
3383
|
+
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515">handleDirectCall</a>(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>*<span class="keyword">></span>(callbase), callee);</div>
|
|
3384
|
+
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  }</div>
|
|
3385
|
+
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  }</div>
|
|
3386
|
+
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  }</div>
|
|
3387
|
+
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  </div>
|
|
3388
|
+
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <span class="comment">// dump SVFIR</span></div>
|
|
3389
|
+
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1dd9ad3f11454be49b4c5099503db8e8">Options::PAGDotGraph</a>())</div>
|
|
3390
|
+
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">dump</a>(<span class="stringliteral">"svfir_final"</span>);</div>
|
|
3391
|
+
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> }</div>
|
|
3392
3392
|
</div><!-- fragment -->
|
|
3393
3393
|
</div>
|
|
3394
3394
|
</div>
|
|
@@ -3848,16 +3848,16 @@ Private Attributes</h2></td></tr>
|
|
|
3848
3848
|
<p><result> = freeze ty <val> If <val> is undef or poison, ‘freeze’ returns an arbitrary, but fixed value of type <code>ty</code> Otherwise, this instruction is a no-op and returns the input <val></p>
|
|
3849
3849
|
<p><result> = freeze ty <val> If <val> is undef or poison, ‘freeze’ returns an arbitrary, but fixed value of type <code>ty</code> Otherwise, this instruction is a no-op and returns the input <val> For now, we assume <val> is never a poison or undef. </p>
|
|
3850
3850
|
|
|
3851
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3852
|
-
<div class="fragment"><div class="line"><a name="
|
|
3853
|
-
<div class="line"><a name="
|
|
3854
|
-
<div class="line"><a name="
|
|
3855
|
-
<div class="line"><a name="
|
|
3856
|
-
<div class="line"><a name="
|
|
3857
|
-
<div class="line"><a name="
|
|
3858
|
-
<div class="line"><a name="
|
|
3859
|
-
<div class="line"><a name="
|
|
3860
|
-
<div class="line"><a name="
|
|
3851
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00982">982</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3852
|
+
<div class="fragment"><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> {</div>
|
|
3853
|
+
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
3854
|
+
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < inst.getNumOperands(); i++)</div>
|
|
3855
|
+
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  {</div>
|
|
3856
|
+
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getOperand(i);</div>
|
|
3857
|
+
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
|
|
3858
|
+
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(src,dst);</div>
|
|
3859
|
+
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  }</div>
|
|
3860
|
+
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span> }</div>
|
|
3861
3861
|
</div><!-- fragment -->
|
|
3862
3862
|
</div>
|
|
3863
3863
|
</div>
|
|
@@ -4386,7 +4386,6 @@ Private Attributes</h2></td></tr>
|
|
|
4386
4386
|
</tr>
|
|
4387
4387
|
</table>
|
|
4388
4388
|
</div><div class="memdoc">
|
|
4389
|
-
<p>default case is set to -1;</p>
|
|
4390
4389
|
|
|
4391
4390
|
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00943">943</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
4392
4391
|
<div class="fragment"><div class="line"><a name="l00944"></a><span class="lineno"> 944</span> {</div>
|
|
@@ -4394,19 +4393,21 @@ Private Attributes</h2></td></tr>
|
|
|
4394
4393
|
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getCondition());</div>
|
|
4395
4394
|
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  </div>
|
|
4396
4395
|
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <a class="code" href="classSVF_1_1BranchStmt.html#a6a0e64824777f04be4c169125dd4f666">BranchStmt::SuccAndCondPairVec</a> successors;</div>
|
|
4397
|
-
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span> 
|
|
4398
|
-
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span> 
|
|
4399
|
-
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span> 
|
|
4400
|
-
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span> 
|
|
4401
|
-
<div class="line"><a name="
|
|
4402
|
-
<div class="line"><a name="
|
|
4403
|
-
<div class="line"><a name="
|
|
4404
|
-
<div class="line"><a name="
|
|
4405
|
-
<div class="line"><a name="
|
|
4406
|
-
<div class="line"><a name="
|
|
4407
|
-
<div class="line"><a name="
|
|
4408
|
-
<div class="line"><a name="
|
|
4409
|
-
<div class="line"><a name="
|
|
4396
|
+
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  </div>
|
|
4397
|
+
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="comment">// get case successor basic block and related case value</span></div>
|
|
4398
|
+
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <a class="code" href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SuccBBAndCondValPairVec</a> succBB2CondValPairVec;</div>
|
|
4399
|
+
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">LLVMUtil::getSuccBBandCondValPairVec</a>(inst, succBB2CondValPairVec);</div>
|
|
4400
|
+
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> &succBB2CaseValue : succBB2CondValPairVec)</div>
|
|
4401
|
+
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  {</div>
|
|
4402
|
+
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">LLVMUtil::getCaseValue</a>(inst, succBB2CaseValue);</div>
|
|
4403
|
+
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succBB = succBB2CaseValue.first;</div>
|
|
4404
|
+
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succInst = &succBB->front();</div>
|
|
4405
|
+
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfSuccInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(succInst);</div>
|
|
4406
|
+
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfSuccInst);</div>
|
|
4407
|
+
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  successors.push_back(std::make_pair(icfgNode, val));</div>
|
|
4408
|
+
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  }</div>
|
|
4409
|
+
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5e56beb1a362b6e596183b04d37fd9e0">addBranchStmt</a>(brinst, cond, successors);</div>
|
|
4410
|
+
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span> }</div>
|
|
4410
4411
|
</div><!-- fragment -->
|
|
4411
4412
|
</div>
|
|
4412
4413
|
</div>
|
|
@@ -4487,13 +4488,13 @@ Private Attributes</h2></td></tr>
|
|
|
4487
4488
|
<p>TODO: var arguments need to be handled. <a href="https://llvm.org/docs/LangRef.html#id1911">https://llvm.org/docs/LangRef.html#id1911</a></p>
|
|
4488
4489
|
<p>ap = alloca struct.va_list ap2 = bitcast struct.va_list* ap to i8* ; Read a single integer argument from ap2 tmp = va_arg i8* ap2, i32 (VAArgInst) TODO: for now, create a copy edge from ap2 to tmp, we assume here tmp should point to the n-th argument of the var_args </p>
|
|
4489
4490
|
|
|
4490
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
4491
|
-
<div class="fragment"><div class="line"><a name="
|
|
4492
|
-
<div class="line"><a name="
|
|
4493
|
-
<div class="line"><a name="
|
|
4494
|
-
<div class="line"><a name="
|
|
4495
|
-
<div class="line"><a name="
|
|
4496
|
-
<div class="line"><a name="
|
|
4491
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00970">970</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
4492
|
+
<div class="fragment"><div class="line"><a name="l00971"></a><span class="lineno"> 971</span> {</div>
|
|
4493
|
+
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
4494
|
+
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getPointerOperand();</div>
|
|
4495
|
+
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
|
|
4496
|
+
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a140defeb309d895394822f8780deda16">addCopyEdge</a>(src,dst);</div>
|
|
4497
|
+
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span> }</div>
|
|
4497
4498
|
</div><!-- fragment -->
|
|
4498
4499
|
</div>
|
|
4499
4500
|
</div>
|
|
@@ -4697,17 +4698,18 @@ Private Attributes</h2></td></tr>
|
|
|
4697
4698
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_ae61030da4a84b5c9c47903804af9d107"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae61030da4a84b5c9c47903804af9d107">SVF::SVFIR::addBranchStmt</a></div><div class="ttdeci">BranchStmt * addBranchStmt(NodeID br, NodeID cond, const BranchStmt::SuccAndCondPairVec &succs)</div><div class="ttdoc">Add BranchStmt.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00186">SVFIR.cpp:186</a></div></div>
|
|
4698
4699
|
<div class="ttc" id="aclassSVF_1_1SVFCallInst_html_a3cbb4b4089c8b27d01da15f2d2f22e14"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#a3cbb4b4089c8b27d01da15f2d2f22e14">SVF::SVFCallInst::getArgOperand</a></div><div class="ttdeci">const SVFValue * getArgOperand(u32_t i) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00708">SVFValue.h:708</a></div></div>
|
|
4699
4700
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a2401b022638769f59f86ab424a189b6e"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string & getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00216">SVFValue.h:216</a></div></div>
|
|
4700
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_ae4516ec05eabece1bc8e0cad1ec8cf1c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ae4516ec05eabece1bc8e0cad1ec8cf1c">SVF::SVFIRBuilder::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const Value *val, const AccessPath &ap, const SVFType *elementType)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
4701
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_ae4516ec05eabece1bc8e0cad1ec8cf1c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ae4516ec05eabece1bc8e0cad1ec8cf1c">SVF::SVFIRBuilder::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const Value *val, const AccessPath &ap, const SVFType *elementType)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01191">SVFIRBuilder.cpp:1191</a></div></div>
|
|
4701
4702
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_af4b18e8e1fdfb117cb5dd1a81cea4b71"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#af4b18e8e1fdfb117cb5dd1a81cea4b71">SVF::SVFIRBuilder::initialiseNodes</a></div><div class="ttdeci">void initialiseNodes()</div><div class="ttdoc">Initialize nodes and edges.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00182">SVFIRBuilder.cpp:182</a></div></div>
|
|
4702
4703
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a38ce45ae5f017c90115ce444b44d478c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">SVF::LLVMUtil::stripAllCasts</a></div><div class="ttdeci">const Value * stripAllCasts(const Value *val)</div><div class="ttdoc">Strip off the all casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00251">LLVMUtil.cpp:251</a></div></div>
|
|
4703
4704
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a4c6cd51def26ebd8e839df9fdc4b64b8"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4c6cd51def26ebd8e839df9fdc4b64b8">SVF::SVFIRBuilder::visitGlobal</a></div><div class="ttdeci">void visitGlobal(SVFModule *svfModule)</div><div class="ttdoc">Handle globals including (global variable and functions)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00566">SVFIRBuilder.cpp:566</a></div></div>
|
|
4704
4705
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5e56beb1a362b6e596183b04d37fd9e0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5e56beb1a362b6e596183b04d37fd9e0">SVF::SVFIRBuilder::addBranchStmt</a></div><div class="ttdeci">void addBranchStmt(NodeID br, NodeID cond, const BranchStmt::SuccAndCondPairVec &succs)</div><div class="ttdoc">Add Branch statement.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00343">SVFIRBuilder.h:343</a></div></div>
|
|
4705
4706
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a7bde256bc906af7f7204929019f4a33e"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">SVF::SVFBasicBlock::front</a></div><div class="ttdeci">const SVFInstruction * front() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00560">SVFValue.h:560</a></div></div>
|
|
4707
|
+
<div class="ttc" id="anamespaceSVF_html_a8de26e1810ea0c3b1e8ad62f1c8a864d"><div class="ttname"><a href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SVF::SuccBBAndCondValPairVec</a></div><div class="ttdeci">std::vector< SuccBBAndCondValPair > SuccBBAndCondValPairVec</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00183">BasicTypes.h:183</a></div></div>
|
|
4706
4708
|
<div class="ttc" id="aclassSVF_1_1Options_html_a3f5235cbdaab1bf53b9144d335c9c3d4"><div class="ttname"><a href="classSVF_1_1Options.html#a3f5235cbdaab1bf53b9144d335c9c3d4">SVF::Options::DumpJson</a></div><div class="ttdeci">static const Option< std::string > DumpJson</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00137">Options.h:137</a></div></div>
|
|
4707
4709
|
<div class="ttc" id="aclassSVF_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#l00101">LLVMModule.h:101</a></div></div>
|
|
4708
4710
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a8bf1847f31ff90937ce76cd0c0af7edb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">SVF::SVFIRBuilder::addBlackHoleAddrEdge</a></div><div class="ttdeci">void addBlackHoleAddrEdge(NodeID node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00285">SVFIRBuilder.h:285</a></div></div>
|
|
4709
4711
|
<div class="ttc" id="aclassSVF_1_1IRGraph_html_a96010999a4e5013beb1c37ef753ff910"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a96010999a4e5013beb1c37ef753ff910">SVF::IRGraph::getReturnNode</a></div><div class="ttdeci">NodeID getReturnNode(const SVFFunction *func) const</div><div class="ttdoc">GetReturnNode - Return the unique node representing the return value of a function.</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00153">IRGraph.h:153</a></div></div>
|
|
4710
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a09baa8c7246853c3faaed85b38f0da60"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a09baa8c7246853c3faaed85b38f0da60">SVF::SVFIRBuilder::sanityCheck</a></div><div class="ttdeci">void sanityCheck()</div><div class="ttdoc">Sanity check for SVFIR.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
4712
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a09baa8c7246853c3faaed85b38f0da60"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a09baa8c7246853c3faaed85b38f0da60">SVF::SVFIRBuilder::sanityCheck</a></div><div class="ttdeci">void sanityCheck()</div><div class="ttdoc">Sanity check for SVFIR.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01165">SVFIRBuilder.cpp:1165</a></div></div>
|
|
4711
4713
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a69963e4030433103e84e57fc015871d8"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a69963e4030433103e84e57fc015871d8">SVF::SVFIR::addCallSiteArgs</a></div><div class="ttdeci">void addCallSiteArgs(CallICFGNode *callBlockNode, const SVFVar *arg)</div><div class="ttdoc">Add callsite arguments.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00512">SVFIR.h:512</a></div></div>
|
|
4712
4714
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a5298f34143ec3a2e6bb74ebad668cbbc"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">SVF::SVFIR::getBaseValVar</a></div><div class="ttdeci">NodeID getBaseValVar(NodeID nodeId)</div><div class="ttdoc">Base and Offset methods for Value and Object node.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00517">SVFIR.cpp:517</a></div></div>
|
|
4713
4715
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a688bd5e1bf36b3e75bfcea9388871dc4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a688bd5e1bf36b3e75bfcea9388871dc4">SVF::SVFUtil::isMemcpyExtFun</a></div><div class="ttdeci">bool isMemcpyExtFun(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00314">SVFUtil.h:314</a></div></div>
|
|
@@ -4728,6 +4730,7 @@ Private Attributes</h2></td></tr>
|
|
|
4728
4730
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a28fbb7cc51eb7e25d88f43e3eb1f30fb"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28fbb7cc51eb7e25d88f43e3eb1f30fb">SVF::SVFUtil::isHareParForCall</a></div><div class="ttdeci">bool isHareParForCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00503">SVFUtil.h:503</a></div></div>
|
|
4729
4731
|
<div class="ttc" id="aclassSVF_1_1CallICFGNode_html_a90fd0b8e44fba1a7eb76d15bce085d66"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">SVF::CallICFGNode::getCallSite</a></div><div class="ttdeci">const SVFInstruction * getCallSite() const</div><div class="ttdoc">Return callsite.</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00409">ICFGNode.h:409</a></div></div>
|
|
4730
4732
|
<div class="ttc" id="anamespaceSVF_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#l00084">BasicTypes.h:84</a></div></div>
|
|
4733
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9001722dd27bf487351725c3d7b65f2f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">SVF::LLVMUtil::getSuccBBandCondValPairVec</a></div><div class="ttdeci">void getSuccBBandCondValPairVec(const SwitchInst &switchInst, SuccBBAndCondValPairVec &vec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01155">LLVMUtil.cpp:1155</a></div></div>
|
|
4731
4734
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_abaf03c3031ef3940c73e3cd8e8ca17b6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abaf03c3031ef3940c73e3cd8e8ca17b6">SVF::SVFIRBuilder::addCallEdge</a></div><div class="ttdeci">void addCallEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Call edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00366">SVFIRBuilder.h:366</a></div></div>
|
|
4732
4735
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_aafd4da7cef6387bb974abe20185b7b96"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aafd4da7cef6387bb974abe20185b7b96">SVF::SymbolTableInfo::retSyms</a></div><div class="ttdeci">FunToIDMapTy & retSyms()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00280">SymbolTableInfo.h:280</a></div></div>
|
|
4733
4736
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad56c48be3ba6ebb95416623256524097"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad56c48be3ba6ebb95416623256524097">SVF::LLVMUtil::getCallee</a></div><div class="ttdeci">const Function * getCallee(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00074">LLVMUtil.h:74</a></div></div>
|
|
@@ -4773,6 +4776,7 @@ Private Attributes</h2></td></tr>
|
|
|
4773
4776
|
<div class="ttc" id="aclassSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode< SVFVar, SVFStmt >::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00217">SVFStatements.h:217</a></div></div>
|
|
4774
4777
|
<div class="ttc" id="anamespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
|
|
4775
4778
|
<div class="ttc" id="aclassSVF_1_1ICFG_html_aa41516cdd2be5066adf22798a4fe2213"><div class="ttname"><a href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00235">ICFG.cpp:235</a></div></div>
|
|
4779
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a33e8378ae1a911169394e545a4ba2220"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">SVF::LLVMUtil::getCaseValue</a></div><div class="ttdeci">s64_t getCaseValue(const SwitchInst &switchInst, SuccBBAndCondValPair &succBB2CondVal)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01165">LLVMUtil.cpp:1165</a></div></div>
|
|
4776
4780
|
<div class="ttc" id="aclassSVF_1_1SVFType_html_a3672b4797c400aac90c6d36ce29e0e57"><div class="ttname"><a href="classSVF_1_1SVFType.html#a3672b4797c400aac90c6d36ce29e0e57">SVF::SVFType::getPointerTo</a></div><div class="ttdeci">const SVFPointerType * getPointerTo() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00296">SVFType.h:296</a></div></div>
|
|
4777
4781
|
<div class="ttc" id="anamespacellvm_html_a7cfc92a12082d69711c97bb3d1b99c48"><div class="ttname"><a href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">llvm::bridge_gep_end</a></div><div class="ttdeci">bridge_gep_iterator bridge_gep_end(const User *GEP)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00157">GEPTypeBridgeIterator.h:157</a></div></div>
|
|
4778
4782
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a2b1de62f88588b068d4eed125049ed8d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2b1de62f88588b068d4eed125049ed8d">SVF::SVFIR::addBlackholePtrNode</a></div><div class="ttdeci">NodeID addBlackholePtrNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00595">SVFIR.h:595</a></div></div>
|
|
@@ -4805,7 +4809,7 @@ Private Attributes</h2></td></tr>
|
|
|
4805
4809
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a2f74db48793a0db76c000ffecf9e1bd2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2f74db48793a0db76c000ffecf9e1bd2">SVF::SVFUtil::getTaskDataAtHareParForSite</a></div><div class="ttdeci">const SVFValue * getTaskDataAtHareParForSite(const CallSite cs)</div><div class="ttdoc">Return the task data argument of the parallel_for routine.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00599">SVFUtil.h:599</a></div></div>
|
|
4806
4810
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_adb6db6407bdc9a39e5bf8cd941f0ad15"><div class="ttname"><a href="classSVF_1_1SVFIR.html#adb6db6407bdc9a39e5bf8cd941f0ad15">SVF::SVFIR::getTypeLocSetsMap</a></div><div class="ttdeci">SVFTypeLocSetsPair & getTypeLocSetsMap(NodeID argId)</div><div class="ttdoc">Given an arg NodeId, get its base SVFType* and all its field location sets.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00230">SVFIR.h:230</a></div></div>
|
|
4807
4811
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_af4e2ec8dee9fca167e20b01cc10b56fd"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#af4e2ec8dee9fca167e20b01cc10b56fd">SVF::SVFIRBuilder::getGlobalVarField</a></div><div class="ttdeci">NodeID getGlobalVarField(const GlobalVariable *gvar, u32_t offset, SVFType *tpy)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00461">SVFIRBuilder.cpp:461</a></div></div>
|
|
4808
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
4812
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01237">SVFIRBuilder.cpp:1237</a></div></div>
|
|
4809
4813
|
<div class="ttc" id="aclassSVF_1_1ICFG_html_af1b2d2839f811a00103df87342dfc919"><div class="ttname"><a href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">SVF::ICFG::getFunExitICFGNode</a></div><div class="ttdeci">FunExitICFGNode * getFunExitICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function exit node.</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00277">ICFG.cpp:277</a></div></div>
|
|
4810
4814
|
<div class="ttc" id="anamespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
|
|
4811
4815
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_ab582424fdb6d9674c1bd4466cdfbe497"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">SVF::SymbolTableInfo::constantSymID</a></div><div class="ttdeci">SymID constantSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00193">SymbolTableInfo.h:193</a></div></div>
|
|
@@ -4885,8 +4889,8 @@ Private Attributes</h2></td></tr>
|
|
|
4885
4889
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a9e81039d17b70e6a3d7310d05fa73c45"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9e81039d17b70e6a3d7310d05fa73c45">SVF::SVFIRBuilder::addUnaryOPEdge</a></div><div class="ttdeci">void addUnaryOPEdge(NodeID src, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Unary edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00337">SVFIRBuilder.h:337</a></div></div>
|
|
4886
4890
|
<div class="ttc" id="anamespaceSVF_html_a8ad3aa124fabddc2fdd07c50403d70a9"><div class="ttname"><a href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">SVF::ConstantDataSequential</a></div><div class="ttdeci">llvm::ConstantDataSequential ConstantDataSequential</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00117">BasicTypes.h:117</a></div></div>
|
|
4887
4891
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a1f77275b24345164f30d519238121f92"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1f77275b24345164f30d519238121f92">SVF::SVFIR::addGepStmt</a></div><div class="ttdeci">GepStmt * addGepStmt(NodeID src, NodeID dst, const AccessPath &ap, bool constGep)</div><div class="ttdoc">Add Gep edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00327">SVFIR.cpp:327</a></div></div>
|
|
4888
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a892ab8cad098e9e9d8425e7f05e35c59"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a892ab8cad098e9e9d8425e7f05e35c59">SVF::SVFIRBuilder::getBaseValueForExtArg</a></div><div class="ttdeci">const Value * getBaseValueForExtArg(const Value *V)</div><div class="ttdoc">Get the base value of (i8* src and i8* dst) for external argument (e.g. memcpy(i8* dst,...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
4889
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5ae68d4465feb54fcb8fd0cf20b7a71a"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5ae68d4465feb54fcb8fd0cf20b7a71a">SVF::SVFIRBuilder::handleIndCall</a></div><div class="ttdeci">void handleIndCall(CallBase *cs)</div><div class="ttdoc">Handle indirect call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
4892
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a892ab8cad098e9e9d8425e7f05e35c59"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a892ab8cad098e9e9d8425e7f05e35c59">SVF::SVFIRBuilder::getBaseValueForExtArg</a></div><div class="ttdeci">const Value * getBaseValueForExtArg(const Value *V)</div><div class="ttdoc">Get the base value of (i8* src and i8* dst) for external argument (e.g. memcpy(i8* dst,...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01063">SVFIRBuilder.cpp:1063</a></div></div>
|
|
4893
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5ae68d4465feb54fcb8fd0cf20b7a71a"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5ae68d4465feb54fcb8fd0cf20b7a71a">SVF::SVFIRBuilder::handleIndCall</a></div><div class="ttdeci">void handleIndCall(CallBase *cs)</div><div class="ttdoc">Handle indirect call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01120">SVFIRBuilder.cpp:1120</a></div></div>
|
|
4890
4894
|
<div class="ttc" id="aclassSVF_1_1NodeIDAllocator_html_a26b5e09e10448694435f74a8b622a7e8"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">SVF::NodeIDAllocator::allocateValueId</a></div><div class="ttdeci">NodeID allocateValueId(void)</div><div class="ttdoc">Allocate a value ID as determined by the strategy.</div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00130">NodeIDAllocator.cpp:130</a></div></div>
|
|
4891
4895
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a26eb45eab3da4695a6e5bad51b01ddc5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a26eb45eab3da4695a6e5bad51b01ddc5">SVF::SymbolTableInfo::getTotalSymNum</a></div><div class="ttdeci">u32_t getTotalSymNum() const</div><div class="ttdoc">Statistics.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00248">SymbolTableInfo.h:248</a></div></div>
|
|
4892
4896
|
<div class="ttc" id="aclassSVF_1_1IRGraph_html_a8b10c318674a47035d617b3ade4f069b"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">SVF::IRGraph::getVarargNode</a></div><div class="ttdeci">NodeID getVarargNode(const SVFFunction *func) const</div><div class="ttdoc">getVarargNode - Return the unique node representing the variadic argument of a variadic function.</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00158">IRGraph.h:158</a></div></div>
|
|
@@ -4905,7 +4909,7 @@ Private Attributes</h2></td></tr>
|
|
|
4905
4909
|
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html">SVF::SymbolTableBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00042">SymbolTableBuilder.h:42</a></div></div>
|
|
4906
4910
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a15105737c91d01ba9daf2161fad220ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">SVF::SVFIRBuilder::setCurrentLocation</a></div><div class="ttdeci">void setCurrentLocation(const Value *val, const BasicBlock *bb)</div><div class="ttdoc">Set current basic block in order to keep track of control flow information.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00241">SVFIRBuilder.h:241</a></div></div>
|
|
4907
4911
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
|
|
4908
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a7c401d6929e583be734c0c4e9957d0d7"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a7c401d6929e583be734c0c4e9957d0d7">SVF::SVFIRBuilder::getAccessPathFromBaseNode</a></div><div class="ttdeci">AccessPath getAccessPathFromBaseNode(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
4912
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a7c401d6929e583be734c0c4e9957d0d7"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a7c401d6929e583be734c0c4e9957d0d7">SVF::SVFIRBuilder::getAccessPathFromBaseNode</a></div><div class="ttdeci">AccessPath getAccessPathFromBaseNode(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01324">SVFIRBuilder.cpp:1324</a></div></div>
|
|
4909
4913
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a89e8cc23aad23d2c326b4a5ff12535ca"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a89e8cc23aad23d2c326b4a5ff12535ca">SVF::SVFIRBuilder::addRetEdge</a></div><div class="ttdeci">void addRetEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Return edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00372">SVFIRBuilder.h:372</a></div></div>
|
|
4910
4914
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html">SVF::SymbolTableInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00047">SymbolTableInfo.h:47</a></div></div>
|
|
4911
4915
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_ad0977d55d947bdccd98d61c66d3f0cc7"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad0977d55d947bdccd98d61c66d3f0cc7">SVF::SVFIR::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const SVFValue *curInst, NodeID base, const AccessPath &ap) const</div><div class="ttdoc">Due to constraint expression, curInst is used to distinguish different instructions (e....</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00538">SVFIR.cpp:538</a></div></div>
|
|
@@ -4914,7 +4918,7 @@ Private Attributes</h2></td></tr>
|
|
|
4914
4918
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a55d8504dbc766c4ede031299a37417ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a55d8504dbc766c4ede031299a37417ef">SVF::SVFIRBuilder::addGlobalBlackHoleAddrEdge</a></div><div class="ttdeci">void addGlobalBlackHoleAddrEdge(NodeID node, const ConstantExpr *int2Ptrce)</div><div class="ttdoc">Add global black hole Address edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00261">SVFIRBuilder.h:261</a></div></div>
|
|
4915
4919
|
<div class="ttc" id="aclassllvm_1_1generic__bridge__gep__type__iterator_html"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html">llvm::generic_bridge_gep_type_iterator</a></div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00017">GEPTypeBridgeIterator.h:17</a></div></div>
|
|
4916
4920
|
<div class="ttc" id="aclassSVF_1_1Options_html_a1dd9ad3f11454be49b4c5099503db8e8"><div class="ttname"><a href="classSVF_1_1Options.html#a1dd9ad3f11454be49b4c5099503db8e8">SVF::Options::PAGDotGraph</a></div><div class="ttdeci">static const Option< bool > PAGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00134">Options.h:134</a></div></div>
|
|
4917
|
-
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
4921
|
+
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01194">LLVMUtil.cpp:1194</a></div></div>
|
|
4918
4922
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html">SVF::LLVMModuleSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00044">LLVMModule.h:44</a></div></div>
|
|
4919
4923
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00212">LLVMModule.h:212</a></div></div>
|
|
4920
4924
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a20ded5829d5975dfaca33f9c64113fe6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a20ded5829d5975dfaca33f9c64113fe6">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const SVFValue *val, NodeID i)</div><div class="ttdoc">Add a memory obj node.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00541">SVFIR.h:541</a></div></div>
|
|
@@ -4963,7 +4967,7 @@ Private Attributes</h2></td></tr>
|
|
|
4963
4967
|
<div class="ttc" id="aclassSVF_1_1PAGBuilderFromFile_html"><div class="ttname"><a href="classSVF_1_1PAGBuilderFromFile.html">SVF::PAGBuilderFromFile</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGBuilderFromFile_8h_source.html#l00041">PAGBuilderFromFile.h:41</a></div></div>
|
|
4964
4968
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a7effb0f37f486745e0cdc3ae5e9c732b"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">SVF::SVFValue::getSourceLoc</a></div><div class="ttdeci">virtual const std::string getSourceLoc() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00253">SVFValue.h:253</a></div></div>
|
|
4965
4969
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a7eb14738f0cf08cc8b5c623c953db4ba"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7eb14738f0cf08cc8b5c623c953db4ba">SVF::SVFIR::addCmpStmt</a></div><div class="ttdeci">CmpStmt * addCmpStmt(NodeID op1, NodeID op2, NodeID dst, u32_t predict)</div><div class="ttdoc">Add Copy edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00127">SVFIR.cpp:127</a></div></div>
|
|
4966
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a3ccc53ca9a6862674ee2ec3bd67aa515"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515">SVF::SVFIRBuilder::handleDirectCall</a></div><div class="ttdeci">void handleDirectCall(CallBase *cs, const Function *F)</div><div class="ttdoc">Handle direct call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
4970
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a3ccc53ca9a6862674ee2ec3bd67aa515"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515">SVF::SVFIRBuilder::handleDirectCall</a></div><div class="ttdeci">void handleDirectCall(CallBase *cs, const Function *F)</div><div class="ttdoc">Handle direct call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00997">SVFIRBuilder.cpp:997</a></div></div>
|
|
4967
4971
|
<div class="ttc" id="aclassSVF_1_1SVFCallInst_html_a496d0e963f0f6a4f9c08183fa91792b0"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#a496d0e963f0f6a4f9c08183fa91792b0">SVF::SVFCallInst::arg_size</a></div><div class="ttdeci">u32_t arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00700">SVFValue.h:700</a></div></div>
|
|
4968
4972
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa0b3e34188f721ff7145e47cb607c79a"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa0b3e34188f721ff7145e47cb607c79a">SVF::LLVMUtil::isCmpConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCmpConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00295">LLVMUtil.h:295</a></div></div>
|
|
4969
4973
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00119">LLVMUtil.h:119</a></div></div>
|