svf-tools 1.0.775 → 1.0.776
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/CFLAlias_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +9 -9
- 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 +2 -2
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGBuilder_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 +585 -576
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +147 -164
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +706 -633
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +7 -2
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +172 -174
- 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 +6 -6
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp_source.html +2 -2
- 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/SymbolTableBuilder_8cpp_source.html +7 -7
- 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 +9 -9
- 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 +2 -2
- 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_1ICFGBuilder.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 +658 -665
- 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_1RaceResultValidator.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 +9 -9
- 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_1SymbolTableBuilder.html +7 -7
- 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_1_1LLVMUtil.html +717 -617
- package/SVF-doxygen/html/html/namespacemembers_func_i.html +4 -1
- package/SVF-doxygen/html/html/namespacemembers_func_r.html +6 -3
- package/SVF-doxygen/html/html/namespacemembers_i.html +6 -3
- package/SVF-doxygen/html/html/namespacemembers_r.html +5 -2
- package/SVF-doxygen/html/html/search/all_10.js +324 -324
- package/SVF-doxygen/html/html/search/all_11.js +218 -217
- package/SVF-doxygen/html/html/search/all_12.js +541 -541
- 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 +63 -63
- 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_9.js +34 -33
- 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 +132 -131
- 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 +32 -32
- 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 -842
- package/SVF-doxygen/html/html/search/functions_8.js +143 -143
- package/SVF-doxygen/html/html/search/functions_9.js +424 -423
- 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 +2 -2
- 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 -62
- 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/SVF-doxygen/html/html/svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/package.json +1 -1
- package/svf-llvm/include/SVF-LLVM/LLVMModule.h +0 -16
- package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +4 -9
- package/svf-llvm/lib/LLVMModule.cpp +14 -4
- package/svf-llvm/lib/LLVMUtil.cpp +78 -1
|
@@ -596,630 +596,698 @@ $(function() {
|
|
|
596
596
|
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">return</span> calledFunctions;</div>
|
|
597
597
|
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span> }</div>
|
|
598
598
|
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  </div>
|
|
599
|
-
<div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#
|
|
599
|
+
<div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e"> 566</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">LLVMUtil::isUnusedGlobalVariable</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>& global)</div>
|
|
600
600
|
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span> {</div>
|
|
601
|
-
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  </div>
|
|
602
|
-
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="
|
|
603
|
-
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span> 
|
|
604
|
-
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span> 
|
|
605
|
-
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> 
|
|
606
|
-
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="
|
|
607
|
-
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span> 
|
|
608
|
-
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  </div>
|
|
609
|
-
<div class="line"><a name="l00576"></a><span class="lineno"
|
|
610
|
-
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> 
|
|
611
|
-
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  </div>
|
|
612
|
-
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span> 
|
|
613
|
-
<div class="line"><a name="
|
|
614
|
-
<div class="line"><a name="
|
|
615
|
-
<div class="line"><a name="
|
|
616
|
-
<div class="line"><a name="
|
|
617
|
-
<div class="line"><a name="
|
|
618
|
-
<div class="line"><a name="
|
|
619
|
-
<div class="line"><a name="
|
|
620
|
-
<div class="line"><a name="
|
|
621
|
-
<div class="line"><a name="
|
|
622
|
-
<div class="line"><a name="
|
|
623
|
-
<div class="line"><a name="
|
|
624
|
-
<div class="line"><a name="
|
|
625
|
-
<div class="line"><a name="
|
|
626
|
-
<div class="line"><a name="
|
|
627
|
-
<div class="line"><a name="
|
|
628
|
-
<div class="line"><a name="
|
|
629
|
-
<div class="line"><a name="
|
|
630
|
-
<div class="line"><a name="
|
|
631
|
-
<div class="line"><a name="
|
|
632
|
-
<div class="line"><a name="
|
|
633
|
-
<div class="line"><a name="
|
|
634
|
-
<div class="line"><a name="
|
|
635
|
-
<div class="line"><a name="
|
|
636
|
-
<div class="line"><a name="
|
|
637
|
-
<div class="line"><a name="
|
|
638
|
-
<div class="line"><a name="
|
|
639
|
-
<div class="line"><a name="
|
|
640
|
-
<div class="line"><a name="
|
|
641
|
-
<div class="line"><a name="
|
|
642
|
-
<div class="line"><a name="
|
|
643
|
-
<div class="line"><a name="
|
|
644
|
-
<div class="line"><a name="
|
|
645
|
-
<div class="line"><a name="
|
|
646
|
-
<div class="line"><a name="
|
|
647
|
-
<div class="line"><a name="
|
|
648
|
-
<div class="line"><a name="
|
|
649
|
-
<div class="line"><a name="
|
|
650
|
-
<div class="line"><a name="
|
|
651
|
-
<div class="line"><a name="
|
|
652
|
-
<div class="line"><a name="
|
|
653
|
-
<div class="line"><a name="
|
|
654
|
-
<div class="line"><a name="
|
|
655
|
-
<div class="line"><a name="
|
|
656
|
-
<div class="line"><a name="
|
|
657
|
-
<div class="line"><a name="
|
|
658
|
-
<div class="line"><a name="
|
|
659
|
-
<div class="line"><a name="
|
|
660
|
-
<div class="line"><a name="
|
|
661
|
-
<div class="line"><a name="
|
|
662
|
-
<div class="line"><a name="
|
|
663
|
-
<div class="line"><a name="
|
|
664
|
-
<div class="line"><a name="
|
|
665
|
-
<div class="line"><a name="
|
|
666
|
-
<div class="line"><a name="
|
|
667
|
-
<div class="line"><a name="
|
|
668
|
-
<div class="line"><a name="
|
|
669
|
-
<div class="line"><a name="
|
|
670
|
-
<div class="line"><a name="
|
|
671
|
-
<div class="line"><a name="
|
|
672
|
-
<div class="line"><a name="
|
|
673
|
-
<div class="line"><a name="
|
|
674
|
-
<div class="line"><a name="
|
|
675
|
-
<div class="line"><a name="
|
|
676
|
-
<div class="line"><a name="
|
|
677
|
-
<div class="line"><a name="
|
|
678
|
-
<div class="line"><a name="
|
|
679
|
-
<div class="line"><a name="
|
|
680
|
-
<div class="line"><a name="
|
|
681
|
-
<div class="line"><a name="
|
|
682
|
-
<div class="line"><a name="
|
|
683
|
-
<div class="line"><a name="
|
|
684
|
-
<div class="line"><a name="
|
|
685
|
-
<div class="line"><a name="
|
|
686
|
-
<div class="line"><a name="
|
|
687
|
-
<div class="line"><a name="
|
|
688
|
-
<div class="line"><a name="
|
|
689
|
-
<div class="line"><a name="
|
|
690
|
-
<div class="line"><a name="
|
|
691
|
-
<div class="line"><a name="
|
|
692
|
-
<div class="line"><a name="
|
|
693
|
-
<div class="line"><a name="
|
|
694
|
-
<div class="line"><a name="
|
|
695
|
-
<div class="line"><a name="
|
|
696
|
-
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast<Function>(val))</div>
|
|
697
|
-
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  {</div>
|
|
698
|
-
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  rawstr << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
|
|
699
|
-
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  }</div>
|
|
700
|
-
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast<BasicBlock>(val))</div>
|
|
701
|
-
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  {</div>
|
|
702
|
-
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  rawstr << <span class="stringliteral">"\"basic block\": "</span> << bb->getName().str() << <span class="stringliteral">", \"location\": "</span> << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(bb->getFirstNonPHI());</div>
|
|
703
|
-
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  }</div>
|
|
704
|
-
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
|
|
601
|
+
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="comment">// Check if it is an empty global annotations</span></div>
|
|
602
|
+
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordflow">if</span> (global.getName() == <span class="stringliteral">"llvm.global.annotations"</span> && SVFUtil::isa<ConstantArray>(global.getInitializer()))</div>
|
|
603
|
+
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
604
|
+
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">else</span></div>
|
|
605
|
+
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  {</div>
|
|
606
|
+
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="comment">// Check if any global strings has at least one effective user</span></div>
|
|
607
|
+
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& use : global.uses())</div>
|
|
608
|
+
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">if</span> (use.getUser()->getNumUses() != 0)</div>
|
|
609
|
+
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
610
|
+
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  }</div>
|
|
611
|
+
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
612
|
+
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span> }</div>
|
|
613
|
+
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  </div>
|
|
614
|
+
<div class="line"><a name="l00581"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2"> 581</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">LLVMUtil::removeUnusedGlobalVariables</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module)</div>
|
|
615
|
+
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span> {</div>
|
|
616
|
+
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  assert(module && <span class="stringliteral">"Null module pointer!"</span>);</div>
|
|
617
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  std::vector<GlobalVariable*> unusedGlobals;</div>
|
|
618
|
+
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>& global : module->globals())</div>
|
|
619
|
+
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">isUnusedGlobalVariable</a>(global))</div>
|
|
620
|
+
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="comment">// Record unused global variables</span></div>
|
|
621
|
+
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  unusedGlobals.push_back(&global);</div>
|
|
622
|
+
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  </div>
|
|
623
|
+
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="comment">// Delete unused global variables</span></div>
|
|
624
|
+
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* global : unusedGlobals)</div>
|
|
625
|
+
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  global->eraseFromParent();</div>
|
|
626
|
+
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span> }</div>
|
|
627
|
+
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  </div>
|
|
628
|
+
<div class="line"><a name="l00596"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a0ecff33105811b1e5ebc83afee76da27"> 596</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a0ecff33105811b1e5ebc83afee76da27">LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a>(std::vector<Function*> removedFuncList)</div>
|
|
629
|
+
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span> {</div>
|
|
630
|
+
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keywordflow">if</span> (removedFuncList.empty())</div>
|
|
631
|
+
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordflow">return</span>;</div>
|
|
632
|
+
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  </div>
|
|
633
|
+
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = removedFuncList[0]->getParent();</div>
|
|
634
|
+
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordflow">if</span> (mod->getName().str() != <a class="code" href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">Options::ExtAPIInput</a>())</div>
|
|
635
|
+
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">return</span>;</div>
|
|
636
|
+
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  </div>
|
|
637
|
+
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a523a8c3f9bfaea178733822ac598d552">LLVMUtil::removeFunAnnotations</a>(removedFuncList);</div>
|
|
638
|
+
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  </div>
|
|
639
|
+
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  std::vector<Function*> funcsToKeep;</div>
|
|
640
|
+
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keyword">auto</span> isCalledFunction = [](<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">llvm::Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
641
|
+
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  {</div>
|
|
642
|
+
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> && <span class="stringliteral">"Null function pointer!"</span>);</div>
|
|
643
|
+
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& use : <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->uses())</div>
|
|
644
|
+
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  {</div>
|
|
645
|
+
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">llvm::User</a>* user = use.getUser();</div>
|
|
646
|
+
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">if</span> (llvm::isa<llvm::CallBase>(user))</div>
|
|
647
|
+
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
648
|
+
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  }</div>
|
|
649
|
+
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
650
|
+
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  };</div>
|
|
651
|
+
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  </div>
|
|
652
|
+
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : removedFuncList)</div>
|
|
653
|
+
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  {</div>
|
|
654
|
+
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">if</span> (isCalledFunction(func))</div>
|
|
655
|
+
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="comment">// Record first kind function(which does not contain any invocation statements)</span></div>
|
|
656
|
+
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  funcsToKeep.push_back(func);</div>
|
|
657
|
+
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keywordflow">else</span></div>
|
|
658
|
+
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="comment">// Delete second kind function(which contains invocation statements)</span></div>
|
|
659
|
+
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  func->eraseFromParent();</div>
|
|
660
|
+
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  }</div>
|
|
661
|
+
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="comment">// Delete first kind functions</span></div>
|
|
662
|
+
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : funcsToKeep)</div>
|
|
663
|
+
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  func->eraseFromParent();</div>
|
|
664
|
+
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="comment">// Delete unused global variables</span></div>
|
|
665
|
+
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">removeUnusedGlobalVariables</a>(mod);</div>
|
|
666
|
+
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span> }</div>
|
|
667
|
+
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  </div>
|
|
668
|
+
<div class="line"><a name="l00644"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d"> 644</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">LLVMUtil::getTypeSizeInBytes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
|
|
669
|
+
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span> {</div>
|
|
670
|
+
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
|
|
671
|
+
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>->isSized())</div>
|
|
672
|
+
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getMainLLVMModule())->getTypeStoreSize(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>*<span class="keyword">></span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>));</div>
|
|
673
|
+
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">else</span></div>
|
|
674
|
+
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordflow">return</span> 0;</div>
|
|
675
|
+
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span> }</div>
|
|
676
|
+
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  </div>
|
|
677
|
+
<div class="line"><a name="l00653"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6"> 653</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">LLVMUtil::getTypeSizeInBytes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *sty, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx)</div>
|
|
678
|
+
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> {</div>
|
|
679
|
+
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  </div>
|
|
680
|
+
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">StructLayout</a> *stTySL = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getMainLLVMModule())->getStructLayout( <span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *<span class="keyword">></span>(sty) );</div>
|
|
681
|
+
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keywordflow">if</span>(sty->isOpaque())</div>
|
|
682
|
+
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordflow">return</span> 0;</div>
|
|
683
|
+
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">else</span></div>
|
|
684
|
+
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">return</span> stTySL->getElementOffset(field_idx);</div>
|
|
685
|
+
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> }</div>
|
|
686
|
+
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  </div>
|
|
687
|
+
<div class="line"><a name="l00667"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8"> 667</a></span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val )</div>
|
|
688
|
+
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span> {</div>
|
|
689
|
+
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keywordflow">if</span>(val==<span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="stringliteral">"{ empty val }"</span>;</div>
|
|
690
|
+
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  </div>
|
|
691
|
+
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
692
|
+
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  std::stringstream rawstr(str);</div>
|
|
693
|
+
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  rawstr << <span class="stringliteral">"{ "</span>;</div>
|
|
694
|
+
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  </div>
|
|
695
|
+
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast<Instruction>(val))</div>
|
|
705
696
|
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  {</div>
|
|
706
|
-
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span> 
|
|
707
|
-
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span> 
|
|
708
|
-
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span> 
|
|
709
|
-
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span> 
|
|
710
|
-
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> 
|
|
711
|
-
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> 
|
|
712
|
-
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span> 
|
|
713
|
-
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span> 
|
|
714
|
-
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span> 
|
|
715
|
-
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span> 
|
|
716
|
-
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span> 
|
|
717
|
-
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span> }</div>
|
|
718
|
-
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  </div>
|
|
719
|
-
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span> 
|
|
720
|
-
<div class="line"><a name="
|
|
721
|
-
<div class="line"><a name="
|
|
722
|
-
<div class="line"><a name="
|
|
723
|
-
<div class="line"><a name="
|
|
724
|
-
<div class="line"><a name="
|
|
725
|
-
<div class="line"><a name="
|
|
726
|
-
<div class="line"><a name="
|
|
727
|
-
<div class="line"><a name="
|
|
728
|
-
<div class="line"><a name="
|
|
729
|
-
<div class="line"><a name="
|
|
730
|
-
<div class="line"><a name="
|
|
731
|
-
<div class="line"><a name="
|
|
732
|
-
<div class="line"><a name="
|
|
733
|
-
<div class="line"><a name="
|
|
734
|
-
<div class="line"><a name="
|
|
735
|
-
<div class="line"><a name="
|
|
736
|
-
<div class="line"><a name="
|
|
737
|
-
<div class="line"><a name="
|
|
738
|
-
<div class="line"><a name="
|
|
739
|
-
<div class="line"><a name="
|
|
740
|
-
<div class="line"><a name="
|
|
741
|
-
<div class="line"><a name="
|
|
742
|
-
<div class="line"><a name="
|
|
743
|
-
<div class="line"><a name="
|
|
744
|
-
<div class="line"><a name="
|
|
745
|
-
<div class="line"><a name="
|
|
746
|
-
<div class="line"><a name="
|
|
747
|
-
<div class="line"><a name="
|
|
748
|
-
<div class="line"><a name="
|
|
749
|
-
<div class="line"><a name="
|
|
750
|
-
<div class="line"><a name="
|
|
751
|
-
<div class="line"><a name="
|
|
752
|
-
<div class="line"><a name="
|
|
753
|
-
<div class="line"><a name="
|
|
754
|
-
<div class="line"><a name="
|
|
755
|
-
<div class="line"><a name="
|
|
756
|
-
<div class="line"><a name="
|
|
757
|
-
<div class="line"><a name="
|
|
758
|
-
<div class="line"><a name="
|
|
759
|
-
<div class="line"><a name="
|
|
760
|
-
<div class="line"><a name="
|
|
761
|
-
<div class="line"><a name="
|
|
762
|
-
<div class="line"><a name="
|
|
763
|
-
<div class="line"><a name="
|
|
764
|
-
<div class="line"><a name="
|
|
765
|
-
<div class="line"><a name="
|
|
766
|
-
<div class="line"><a name="
|
|
767
|
-
<div class="line"><a name="
|
|
768
|
-
<div class="line"><a name="
|
|
769
|
-
<div class="line"><a name="
|
|
770
|
-
<div class="line"><a name="
|
|
697
|
+
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">if</span> (SVFUtil::isa<AllocaInst>(inst))</div>
|
|
698
|
+
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  {</div>
|
|
699
|
+
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgAddrUses(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>*<span class="keyword">></span>(inst)))</div>
|
|
700
|
+
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  {</div>
|
|
701
|
+
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast<llvm::DbgDeclareInst>(DII))</div>
|
|
702
|
+
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  {</div>
|
|
703
|
+
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  llvm::DIVariable *DIVar = SVFUtil::cast<llvm::DIVariable>(DDI->getVariable());</div>
|
|
704
|
+
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << DIVar->getLine() << <span class="stringliteral">", \"fl\": \""</span> << DIVar->getFilename().str() << <span class="stringliteral">"\""</span>;</div>
|
|
705
|
+
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">break</span>;</div>
|
|
706
|
+
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div>
|
|
707
|
+
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  }</div>
|
|
708
|
+
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  }</div>
|
|
709
|
+
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst->getMetadata(<span class="stringliteral">"dbg"</span>)) <span class="comment">// Here I is an LLVM instruction</span></div>
|
|
710
|
+
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  {</div>
|
|
711
|
+
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  llvm::DILocation* Loc = SVFUtil::cast<llvm::DILocation>(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
|
|
712
|
+
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordtype">unsigned</span> Line = Loc->getLine();</div>
|
|
713
|
+
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordtype">unsigned</span> Column = Loc->getColumn();</div>
|
|
714
|
+
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc->getFilename().str();</div>
|
|
715
|
+
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
|
|
716
|
+
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
|
|
717
|
+
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  {</div>
|
|
718
|
+
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keyword">auto</span> inlineLoc = Loc->getInlinedAt();</div>
|
|
719
|
+
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keywordflow">if</span>(inlineLoc)</div>
|
|
720
|
+
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  {</div>
|
|
721
|
+
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  Line = inlineLoc->getLine();</div>
|
|
722
|
+
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  Column = inlineLoc->getColumn();</div>
|
|
723
|
+
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  File = inlineLoc->getFilename().str();</div>
|
|
724
|
+
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  }</div>
|
|
725
|
+
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  }</div>
|
|
726
|
+
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << Line << <span class="stringliteral">", \"cl\": "</span> << Column << <span class="stringliteral">", \"fl\": \""</span> << File << <span class="stringliteral">"\""</span>;</div>
|
|
727
|
+
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  }</div>
|
|
728
|
+
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  }</div>
|
|
729
|
+
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* argument = SVFUtil::dyn_cast<Argument>(val))</div>
|
|
730
|
+
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  {</div>
|
|
731
|
+
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keywordflow">if</span> (argument->getArgNo()%10 == 1)</div>
|
|
732
|
+
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"st"</span>;</div>
|
|
733
|
+
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument->getArgNo()%10 == 2)</div>
|
|
734
|
+
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"nd"</span>;</div>
|
|
735
|
+
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument->getArgNo()%10 == 3)</div>
|
|
736
|
+
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"rd"</span>;</div>
|
|
737
|
+
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="keywordflow">else</span></div>
|
|
738
|
+
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"th"</span>;</div>
|
|
739
|
+
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  rawstr << <span class="stringliteral">" arg "</span> << argument->getParent()->getName().str() << <span class="stringliteral">" "</span></div>
|
|
740
|
+
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument->getParent());</div>
|
|
741
|
+
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  }</div>
|
|
742
|
+
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast<GlobalVariable>(val))</div>
|
|
743
|
+
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  {</div>
|
|
744
|
+
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  rawstr << <span class="stringliteral">"Glob "</span>;</div>
|
|
745
|
+
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a>* CU_Nodes = gvar->getParent()->getNamedMetadata(<span class="stringliteral">"llvm.dbg.cu"</span>);</div>
|
|
746
|
+
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">if</span>(CU_Nodes)</div>
|
|
747
|
+
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  {</div>
|
|
748
|
+
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes->getNumOperands(); i != e; ++i)</div>
|
|
749
|
+
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  {</div>
|
|
750
|
+
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  llvm::DICompileUnit *CUNode = SVFUtil::cast<llvm::DICompileUnit>(CU_Nodes->getOperand(i));</div>
|
|
751
|
+
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode->getGlobalVariables())</div>
|
|
752
|
+
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  {</div>
|
|
753
|
+
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  llvm::DIGlobalVariable * DGV = GV->getVariable();</div>
|
|
754
|
+
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  </div>
|
|
755
|
+
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <span class="keywordflow">if</span>(DGV->getName() == gvar->getName())</div>
|
|
756
|
+
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  {</div>
|
|
757
|
+
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << DGV->getLine() << <span class="stringliteral">", \"fl\": \""</span> << DGV->getFilename().str() << <span class="stringliteral">"\""</span>;</div>
|
|
758
|
+
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  }</div>
|
|
759
|
+
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  </div>
|
|
760
|
+
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  }</div>
|
|
761
|
+
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  }</div>
|
|
762
|
+
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  }</div>
|
|
763
|
+
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  }</div>
|
|
764
|
+
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast<Function>(val))</div>
|
|
765
|
+
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  {</div>
|
|
766
|
+
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  rawstr << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
|
|
771
767
|
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  }</div>
|
|
772
|
-
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keywordflow">else</span
|
|
768
|
+
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast<BasicBlock>(val))</div>
|
|
773
769
|
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  {</div>
|
|
774
|
-
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="
|
|
775
|
-
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span> 
|
|
776
|
-
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span> 
|
|
777
|
-
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span> 
|
|
778
|
-
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span> 
|
|
779
|
-
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span> 
|
|
780
|
-
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span> 
|
|
781
|
-
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span> 
|
|
782
|
-
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span> 
|
|
783
|
-
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> 
|
|
784
|
-
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  }
|
|
785
|
-
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> 
|
|
786
|
-
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  </div>
|
|
787
|
-
<div class="line"><a name="
|
|
788
|
-
<div class="line"><a name="
|
|
789
|
-
<div class="line"><a name="
|
|
790
|
-
<div class="line"><a name="
|
|
791
|
-
<div class="line"><a name="
|
|
792
|
-
<div class="line"><a name="
|
|
793
|
-
<div class="line"><a name="
|
|
794
|
-
<div class="line"><a name="
|
|
795
|
-
<div class="line"><a name="
|
|
796
|
-
<div class="line"><a name="
|
|
797
|
-
<div class="line"><a name="
|
|
798
|
-
<div class="line"><a name="
|
|
799
|
-
<div class="line"><a name="
|
|
800
|
-
<div class="line"><a name="
|
|
801
|
-
<div class="line"><a name="
|
|
802
|
-
<div class="line"><a name="
|
|
803
|
-
<div class="line"><a name="
|
|
804
|
-
<div class="line"><a name="
|
|
805
|
-
<div class="line"><a name="
|
|
806
|
-
<div class="line"><a name="
|
|
807
|
-
<div class="line"><a name="
|
|
808
|
-
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span> 
|
|
809
|
-
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span> 
|
|
810
|
-
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span> 
|
|
811
|
-
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span> 
|
|
812
|
-
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span> 
|
|
813
|
-
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  </div>
|
|
814
|
-
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <
|
|
815
|
-
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span> 
|
|
816
|
-
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span> 
|
|
817
|
-
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span> 
|
|
818
|
-
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span> 
|
|
819
|
-
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span> 
|
|
820
|
-
<div class="line"><a name="l00800"></a><span class="lineno"
|
|
821
|
-
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span> 
|
|
822
|
-
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span> 
|
|
823
|
-
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span> 
|
|
824
|
-
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  </div>
|
|
825
|
-
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span> 
|
|
826
|
-
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span> 
|
|
827
|
-
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span> 
|
|
828
|
-
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span> 
|
|
829
|
-
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span> 
|
|
830
|
-
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span> 
|
|
770
|
+
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  rawstr << <span class="stringliteral">"\"basic block\": "</span> << bb->getName().str() << <span class="stringliteral">", \"location\": "</span> << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(bb->getFirstNonPHI());</div>
|
|
771
|
+
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  }</div>
|
|
772
|
+
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
|
|
773
|
+
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  {</div>
|
|
774
|
+
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  rawstr << <span class="stringliteral">"constant data"</span>;</div>
|
|
775
|
+
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  }</div>
|
|
776
|
+
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">else</span></div>
|
|
777
|
+
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  {</div>
|
|
778
|
+
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  rawstr << <span class="stringliteral">"N/A"</span>;</div>
|
|
779
|
+
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  }</div>
|
|
780
|
+
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  rawstr << <span class="stringliteral">" }"</span>;</div>
|
|
781
|
+
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  </div>
|
|
782
|
+
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">"{ }"</span>)</div>
|
|
783
|
+
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
|
|
784
|
+
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
785
|
+
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span> }</div>
|
|
786
|
+
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  </div>
|
|
787
|
+
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  </div>
|
|
788
|
+
<div class="line"><a name="l00771"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c"> 771</a></span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">LLVMUtil::getSourceLocOfFunction</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
789
|
+
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span> {</div>
|
|
790
|
+
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
791
|
+
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  std::stringstream rawstr(str);</div>
|
|
792
|
+
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="comment">/*</span></div>
|
|
793
|
+
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span> <span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
|
|
794
|
+
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="comment"> * looks like the relevant</span></div>
|
|
795
|
+
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="comment"> */</span></div>
|
|
796
|
+
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">llvm::DISubprogram</a> *SP = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getSubprogram())</div>
|
|
797
|
+
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  {</div>
|
|
798
|
+
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keywordflow">if</span> (SP->describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
|
|
799
|
+
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << SP->getLine() << <span class="stringliteral">", \"file\": \""</span> << SP->getFilename().str() << <span class="stringliteral">"\""</span>;</div>
|
|
800
|
+
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  }</div>
|
|
801
|
+
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
802
|
+
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span> }</div>
|
|
803
|
+
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  </div>
|
|
804
|
+
<div class="line"><a name="l00788"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a7fa1f910598426330f08da19e9efdfa3"> 788</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">LLVMUtil::getNextInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector<const Instruction*>& instList)</div>
|
|
805
|
+
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span> {</div>
|
|
806
|
+
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">if</span> (!curInst->isTerminator())</div>
|
|
807
|
+
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  {</div>
|
|
808
|
+
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst->getNextNode();</div>
|
|
809
|
+
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
|
|
810
|
+
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
|
|
811
|
+
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">else</span></div>
|
|
812
|
+
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  instList.push_back(nextInst);</div>
|
|
813
|
+
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  }</div>
|
|
814
|
+
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordflow">else</span></div>
|
|
815
|
+
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  {</div>
|
|
816
|
+
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst->getParent();</div>
|
|
817
|
+
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div>
|
|
818
|
+
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div>
|
|
819
|
+
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  {</div>
|
|
820
|
+
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &((*it)->front());</div>
|
|
821
|
+
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
|
|
822
|
+
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
|
|
823
|
+
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="keywordflow">else</span></div>
|
|
824
|
+
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  instList.push_back(nextInst);</div>
|
|
825
|
+
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  }</div>
|
|
826
|
+
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  }</div>
|
|
831
827
|
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span> }</div>
|
|
832
828
|
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  </div>
|
|
833
|
-
<div class="line"><a name="l00813"></a><span class="lineno"
|
|
834
|
-
<div class="line"><a name="
|
|
835
|
-
<div class="line"><a name="
|
|
836
|
-
<div class="line"><a name="
|
|
837
|
-
<div class="line"><a name="
|
|
838
|
-
<div class="line"><a name="
|
|
839
|
-
<div class="line"><a name="
|
|
840
|
-
<div class="line"><a name="
|
|
841
|
-
<div class="line"><a name="
|
|
842
|
-
<div class="line"><a name="
|
|
843
|
-
<div class="line"><a name="
|
|
844
|
-
<div class="line"><a name="
|
|
845
|
-
<div class="line"><a name="
|
|
846
|
-
<div class="line"><a name="
|
|
847
|
-
<div class="line"><a name="
|
|
848
|
-
<div class="line"><a name="
|
|
849
|
-
<div class="line"><a name="
|
|
850
|
-
<div class="line"><a name="
|
|
851
|
-
<div class="line"><a name="
|
|
852
|
-
<div class="line"><a name="
|
|
853
|
-
<div class="line"><a name="
|
|
854
|
-
<div class="line"><a name="
|
|
855
|
-
<div class="line"><a name="
|
|
856
|
-
<div class="line"><a name="
|
|
857
|
-
<div class="line"><a name="
|
|
858
|
-
<div class="line"><a name="
|
|
859
|
-
<div class="line"><a name="
|
|
860
|
-
<div class="line"><a name="
|
|
861
|
-
<div class="line"><a name="
|
|
862
|
-
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  }</div>
|
|
863
|
-
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
829
|
+
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  </div>
|
|
830
|
+
<div class="line"><a name="l00815"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a08876cc07f9b9dbe84f87aea09e9824f"> 815</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">LLVMUtil::getPrevInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector<const Instruction*>& instList)</div>
|
|
831
|
+
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span> {</div>
|
|
832
|
+
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">if</span> (curInst != &(curInst->getParent()->front()))</div>
|
|
833
|
+
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  {</div>
|
|
834
|
+
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst->getPrevNode();</div>
|
|
835
|
+
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
|
|
836
|
+
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
|
|
837
|
+
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keywordflow">else</span></div>
|
|
838
|
+
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  instList.push_back(prevInst);</div>
|
|
839
|
+
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  }</div>
|
|
840
|
+
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordflow">else</span></div>
|
|
841
|
+
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  {</div>
|
|
842
|
+
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst->getParent();</div>
|
|
843
|
+
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div>
|
|
844
|
+
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div>
|
|
845
|
+
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  {</div>
|
|
846
|
+
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &((*it)->back());</div>
|
|
847
|
+
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
|
|
848
|
+
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
|
|
849
|
+
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="keywordflow">else</span></div>
|
|
850
|
+
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  instList.push_back(prevInst);</div>
|
|
851
|
+
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  }</div>
|
|
852
|
+
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  }</div>
|
|
853
|
+
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span> }</div>
|
|
854
|
+
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  </div>
|
|
855
|
+
<div class="line"><a name="l00841"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c"> 841</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">LLVMUtil::isConstantObjSym</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val)</div>
|
|
856
|
+
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span> {</div>
|
|
857
|
+
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getLLVMValue(val));</div>
|
|
864
858
|
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span> }</div>
|
|
865
859
|
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  </div>
|
|
866
|
-
<div class="line"><a name="
|
|
867
|
-
<div class="line"><a name="
|
|
868
|
-
<div class="line"><a name="
|
|
869
|
-
<div class="line"><a name="
|
|
870
|
-
<div class="line"><a name="
|
|
871
|
-
<div class="line"><a name="
|
|
872
|
-
<div class="line"><a name="
|
|
873
|
-
<div class="line"><a name="
|
|
874
|
-
<div class="line"><a name="
|
|
875
|
-
<div class="line"><a name="
|
|
876
|
-
<div class="line"><a name="
|
|
877
|
-
<div class="line"><a name="
|
|
878
|
-
<div class="line"><a name="
|
|
879
|
-
<div class="line"><a name="
|
|
880
|
-
<div class="line"><a name="
|
|
881
|
-
<div class="line"><a name="
|
|
882
|
-
<div class="line"><a name="
|
|
883
|
-
<div class="line"><a name="
|
|
884
|
-
<div class="line"><a name="
|
|
885
|
-
<div class="line"><a name="
|
|
886
|
-
<div class="line"><a name="
|
|
887
|
-
<div class="line"><a name="
|
|
888
|
-
<div class="line"><a name="
|
|
889
|
-
<div class="line"><a name="
|
|
890
|
-
<div class="line"><a name="
|
|
891
|
-
<div class="line"><a name="
|
|
892
|
-
<div class="line"><a name="
|
|
893
|
-
<div class="line"><a name="
|
|
894
|
-
<div class="line"><a name="
|
|
895
|
-
<div class="line"><a name="
|
|
896
|
-
<div class="line"><a name="
|
|
897
|
-
<div class="line"><a name="
|
|
898
|
-
<div class="line"><a name="
|
|
899
|
-
<div class="line"><a name="
|
|
900
|
-
<div class="line"><a name="
|
|
901
|
-
<div class="line"><a name="
|
|
902
|
-
<div class="line"><a name="
|
|
903
|
-
<div class="line"><a name="
|
|
904
|
-
<div class="line"><a name="
|
|
905
|
-
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span> {</div>
|
|
906
|
-
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getName().str());</div>
|
|
907
|
-
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</div>
|
|
860
|
+
<div class="line"><a name="l00849"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2fd5c626b818ac22a9c845227e1461c4"> 849</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">LLVMUtil::isConstantObjSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
|
|
861
|
+
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span> {</div>
|
|
862
|
+
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* v = SVFUtil::dyn_cast<GlobalVariable>(val))</div>
|
|
863
|
+
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  {</div>
|
|
864
|
+
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">LLVMUtil::isValVtbl</a>(v))</div>
|
|
865
|
+
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
866
|
+
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v->hasInitializer())</div>
|
|
867
|
+
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  {</div>
|
|
868
|
+
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keywordflow">return</span> !v->isExternalLinkage(v->getLinkage());</div>
|
|
869
|
+
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  }</div>
|
|
870
|
+
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <span class="keywordflow">else</span></div>
|
|
871
|
+
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  {</div>
|
|
872
|
+
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> *stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(v->getInitializer()->getType())-><a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>();</div>
|
|
873
|
+
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keyword">const</span> std::vector<const SVFType*> &fields = stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>();</div>
|
|
874
|
+
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <span class="keywordflow">for</span> (std::vector<const SVFType*>::const_iterator it = fields.begin(), eit = fields.end(); it != eit; ++it)</div>
|
|
875
|
+
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  {</div>
|
|
876
|
+
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = *it;</div>
|
|
877
|
+
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  assert(!SVFUtil::isa<SVFFunctionType>(elemTy) && <span class="stringliteral">"Initializer of a global is a function?"</span>);</div>
|
|
878
|
+
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="keywordflow">if</span> (SVFUtil::isa<SVFPointerType>(elemTy))</div>
|
|
879
|
+
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
880
|
+
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  }</div>
|
|
881
|
+
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  </div>
|
|
882
|
+
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordflow">return</span> v->isConstant();</div>
|
|
883
|
+
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  }</div>
|
|
884
|
+
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  }</div>
|
|
885
|
+
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val);</div>
|
|
886
|
+
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span> }</div>
|
|
887
|
+
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  </div>
|
|
888
|
+
<div class="line"><a name="l00877"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a4f803756f0a73e8564d9544ce27be1c9"> 877</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4f803756f0a73e8564d9544ce27be1c9">LLVMUtil::getVtblStruct</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a> *vtbl)</div>
|
|
889
|
+
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span> {</div>
|
|
890
|
+
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *vtblStruct = SVFUtil::dyn_cast<ConstantStruct>(vtbl->getOperand(0));</div>
|
|
891
|
+
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  assert(vtblStruct && <span class="stringliteral">"Initializer of a vtable not a struct?"</span>);</div>
|
|
892
|
+
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  </div>
|
|
893
|
+
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="keywordflow">if</span> (vtblStruct->getNumOperands() == 2 &&</div>
|
|
894
|
+
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  SVFUtil::isa<ConstantStruct>(vtblStruct->getOperand(0)) &&</div>
|
|
895
|
+
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  vtblStruct->getOperand(1)->getType()->isArrayTy())</div>
|
|
896
|
+
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <span class="keywordflow">return</span> SVFUtil::cast<ConstantStruct>(vtblStruct->getOperand(0));</div>
|
|
897
|
+
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  </div>
|
|
898
|
+
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <span class="keywordflow">return</span> vtblStruct;</div>
|
|
908
899
|
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span> }</div>
|
|
909
900
|
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  </div>
|
|
910
|
-
<div class="line"><a name="l00890"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#
|
|
901
|
+
<div class="line"><a name="l00890"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01"> 890</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">LLVMUtil::isValVtbl</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
|
|
911
902
|
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span> {</div>
|
|
912
|
-
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="
|
|
913
|
-
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  </div>
|
|
914
|
-
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <
|
|
915
|
-
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span> 
|
|
916
|
-
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span> 
|
|
917
|
-
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span> 
|
|
918
|
-
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span> 
|
|
919
|
-
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span> 
|
|
920
|
-
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span> 
|
|
921
|
-
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span> 
|
|
922
|
-
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span> 
|
|
923
|
-
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  </div>
|
|
924
|
-
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span> 
|
|
925
|
-
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span> 
|
|
926
|
-
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span> 
|
|
927
|
-
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span> 
|
|
928
|
-
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  </div>
|
|
929
|
-
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span> 
|
|
930
|
-
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span> }</div>
|
|
931
|
-
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  </div>
|
|
932
|
-
<div class="line"><a name="l00912"></a><span class="lineno"
|
|
933
|
-
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span> 
|
|
934
|
-
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span> 
|
|
935
|
-
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span> 
|
|
936
|
-
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span> 
|
|
937
|
-
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span> 
|
|
938
|
-
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span> 
|
|
939
|
-
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span> 
|
|
940
|
-
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span> 
|
|
941
|
-
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span> 
|
|
942
|
-
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span> 
|
|
943
|
-
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span> 
|
|
944
|
-
<div class="line"><a name="
|
|
945
|
-
<div class="line"><a name="
|
|
946
|
-
<div class="line"><a name="
|
|
947
|
-
<div class="line"><a name="
|
|
948
|
-
<div class="line"><a name="
|
|
949
|
-
<div class="line"><a name="
|
|
903
|
+
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keywordflow">if</span> (!SVFUtil::isa<GlobalVariable>(val))</div>
|
|
904
|
+
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
905
|
+
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> valName = val->getName().str();</div>
|
|
906
|
+
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <span class="keywordflow">return</span> valName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>.size(),</div>
|
|
907
|
+
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>) == 0;</div>
|
|
908
|
+
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span> }</div>
|
|
909
|
+
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  </div>
|
|
910
|
+
<div class="line"><a name="l00899"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a45da980cb7c085942bb8e6010db9d84f"> 899</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a45da980cb7c085942bb8e6010db9d84f">LLVMUtil::isLoadVtblInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* loadInst)</div>
|
|
911
|
+
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span> {</div>
|
|
912
|
+
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* loadSrc = loadInst->getPointerOperand();</div>
|
|
913
|
+
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* valTy = loadSrc->getType();</div>
|
|
914
|
+
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = valTy;</div>
|
|
915
|
+
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < 3; ++i)</div>
|
|
916
|
+
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  {</div>
|
|
917
|
+
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = SVFUtil::dyn_cast<PointerType>(elemTy))</div>
|
|
918
|
+
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  elemTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrTy);</div>
|
|
919
|
+
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="keywordflow">else</span></div>
|
|
920
|
+
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
921
|
+
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  }</div>
|
|
922
|
+
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* functy = SVFUtil::dyn_cast<FunctionType>(elemTy))</div>
|
|
923
|
+
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  {</div>
|
|
924
|
+
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* paramty = functy->getParamType(0);</div>
|
|
925
|
+
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">LLVMUtil::getClassNameFromType</a>(paramty);</div>
|
|
926
|
+
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keywordflow">if</span> (className.size() > 0)</div>
|
|
927
|
+
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  {</div>
|
|
928
|
+
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
929
|
+
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  }</div>
|
|
930
|
+
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  }</div>
|
|
931
|
+
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
932
|
+
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span> }</div>
|
|
933
|
+
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  </div>
|
|
934
|
+
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span> <span class="comment">/*</span></div>
|
|
935
|
+
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span> <span class="comment"> * a virtual callsite follows the following instruction sequence pattern:</span></div>
|
|
936
|
+
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="comment"> * %vtable = load this</span></div>
|
|
937
|
+
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span> <span class="comment"> * %vfn = getelementptr %vtable, idx</span></div>
|
|
938
|
+
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span> <span class="comment"> * %x = load %vfn</span></div>
|
|
939
|
+
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span> <span class="comment"> * call %x (this)</span></div>
|
|
940
|
+
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span> <span class="comment"> */</span></div>
|
|
941
|
+
<div class="line"><a name="l00930"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf"> 930</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">LLVMUtil::isVirtualCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
|
|
942
|
+
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span> {</div>
|
|
943
|
+
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="comment">// the callsite must be an indirect one with at least one argument (this</span></div>
|
|
944
|
+
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <span class="comment">// ptr)</span></div>
|
|
945
|
+
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keywordflow">if</span> (cs->getCalledFunction() != <span class="keyword">nullptr</span> || cs->arg_empty())</div>
|
|
946
|
+
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
947
|
+
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  </div>
|
|
948
|
+
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="comment">// the first argument (this pointer) must be a pointer type and must be a</span></div>
|
|
949
|
+
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="comment">// class name</span></div>
|
|
950
|
+
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">if</span> (cs->getArgOperand(0)->getType()->isPointerTy() == <span class="keyword">false</span>)</div>
|
|
951
|
+
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
952
|
+
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  </div>
|
|
953
|
+
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfunc = cs->getCalledOperand();</div>
|
|
954
|
+
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst = SVFUtil::dyn_cast<LoadInst>(vfunc))</div>
|
|
950
955
|
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  {</div>
|
|
951
|
-
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="
|
|
952
|
-
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span> 
|
|
953
|
-
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span> 
|
|
954
|
-
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span> 
|
|
955
|
-
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span> 
|
|
956
|
-
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span> 
|
|
957
|
-
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span> 
|
|
958
|
-
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span> 
|
|
959
|
-
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span> 
|
|
960
|
-
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span> 
|
|
961
|
-
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span> 
|
|
962
|
-
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span> 
|
|
963
|
-
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span> 
|
|
964
|
-
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span> 
|
|
965
|
-
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span> 
|
|
966
|
-
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span> 
|
|
967
|
-
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span> 
|
|
968
|
-
<div class="line"><a name="l00962"></a><span class="lineno"
|
|
969
|
-
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span> 
|
|
970
|
-
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span> 
|
|
971
|
-
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span> 
|
|
972
|
-
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span> 
|
|
973
|
-
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span> 
|
|
974
|
-
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span> 
|
|
975
|
-
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span> 
|
|
956
|
+
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst->getPointerOperand();</div>
|
|
957
|
+
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
|
|
958
|
+
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  SVFUtil::dyn_cast<GetElementPtrInst>(vfuncptr))</div>
|
|
959
|
+
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  {</div>
|
|
960
|
+
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keywordflow">if</span> (vfuncptrgepinst->getNumIndices() != 1)</div>
|
|
961
|
+
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
962
|
+
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = vfuncptrgepinst->getPointerOperand();</div>
|
|
963
|
+
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keywordflow">if</span> (SVFUtil::isa<LoadInst>(vtbl))</div>
|
|
964
|
+
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  {</div>
|
|
965
|
+
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
966
|
+
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  }</div>
|
|
967
|
+
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  }</div>
|
|
968
|
+
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  }</div>
|
|
969
|
+
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
970
|
+
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span> }</div>
|
|
971
|
+
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  </div>
|
|
972
|
+
<div class="line"><a name="l00961"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a47bbc0527ced570d576ccc2f9df409cb"> 961</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47bbc0527ced570d576ccc2f9df409cb">LLVMUtil::isCPPThunkFunction</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
973
|
+
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span> {</div>
|
|
974
|
+
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getName().str());</div>
|
|
975
|
+
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</div>
|
|
976
|
+
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span> }</div>
|
|
977
|
+
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  </div>
|
|
978
|
+
<div class="line"><a name="l00967"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#aab1cb59036d181e20a477bf1eebd81ff"> 967</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aab1cb59036d181e20a477bf1eebd81ff">LLVMUtil::getThunkTarget</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
979
|
+
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span> {</div>
|
|
980
|
+
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* ret = <span class="keyword">nullptr</span>;</div>
|
|
976
981
|
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  </div>
|
|
977
|
-
<div class="line"><a name="l00971"></a><span class="lineno"
|
|
978
|
-
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span> {</div>
|
|
979
|
-
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span> 
|
|
980
|
-
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span> 
|
|
981
|
-
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span> 
|
|
982
|
-
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span> 
|
|
983
|
-
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span> 
|
|
984
|
-
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span> 
|
|
985
|
-
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span> 
|
|
986
|
-
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span> 
|
|
987
|
-
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span> 
|
|
988
|
-
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span> 
|
|
989
|
-
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span> 
|
|
982
|
+
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& bb : *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
983
|
+
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  {</div>
|
|
984
|
+
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& inst : bb)</div>
|
|
985
|
+
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  {</div>
|
|
986
|
+
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::dyn_cast<CallBase>(&inst))</div>
|
|
987
|
+
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  {</div>
|
|
988
|
+
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <span class="comment">// assert(cs.getCalledFunction() &&</span></div>
|
|
989
|
+
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <span class="comment">// "Indirect call detected in thunk func");</span></div>
|
|
990
|
+
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="comment">// assert(ret == nullptr && "multiple callsites in thunk func");</span></div>
|
|
991
|
+
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  </div>
|
|
992
|
+
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  ret = callbase->getCalledFunction();</div>
|
|
993
|
+
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  }</div>
|
|
994
|
+
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  }</div>
|
|
990
995
|
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  }</div>
|
|
991
|
-
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span> 
|
|
992
|
-
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span> 
|
|
993
|
-
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span> 
|
|
994
|
-
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span> 
|
|
995
|
-
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span> 
|
|
996
|
-
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span> 
|
|
997
|
-
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span> 
|
|
998
|
-
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span> 
|
|
999
|
-
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span> 
|
|
1000
|
-
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span> 
|
|
1001
|
-
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span> 
|
|
1002
|
-
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span> 
|
|
1003
|
-
<div class="line"><a name="
|
|
1004
|
-
<div class="line"><a name="
|
|
1005
|
-
<div class="line"><a name="
|
|
1006
|
-
<div class="line"><a name="
|
|
1007
|
-
<div class="line"><a name="
|
|
1008
|
-
<div class="line"><a name="
|
|
1009
|
-
<div class="line"><a name="
|
|
1010
|
-
<div class="line"><a name="
|
|
1011
|
-
<div class="line"><a name="
|
|
1012
|
-
<div class="line"><a name="
|
|
1013
|
-
<div class="line"><a name="
|
|
1014
|
-
<div class="line"><a name="
|
|
1015
|
-
<div class="line"><a name="
|
|
1016
|
-
<div class="line"><a name="
|
|
1017
|
-
<div class="line"><a name="
|
|
1018
|
-
<div class="line"><a name="
|
|
1019
|
-
<div class="line"><a name="
|
|
1020
|
-
<div class="line"><a name="
|
|
1021
|
-
<div class="line"><a name="
|
|
1022
|
-
<div class="line"><a name="
|
|
1023
|
-
<div class="line"><a name="
|
|
1024
|
-
<div class="line"><a name="
|
|
1025
|
-
<div class="line"><a name="
|
|
1026
|
-
<div class="line"><a name="
|
|
1027
|
-
<div class="line"><a name="
|
|
1028
|
-
<div class="line"><a name="
|
|
1029
|
-
<div class="line"><a name="
|
|
1030
|
-
<div class="line"><a name="
|
|
1031
|
-
<div class="line"><a name="
|
|
1032
|
-
<div class="line"><a name="
|
|
1033
|
-
<div class="line"><a name="
|
|
1034
|
-
<div class="line"><a name="
|
|
1035
|
-
<div class="line"><a name="
|
|
1036
|
-
<div class="line"><a name="
|
|
1037
|
-
<div class="line"><a name="
|
|
1038
|
-
<div class="line"><a name="
|
|
1039
|
-
<div class="line"><a name="
|
|
1040
|
-
<div class="line"><a name="
|
|
1041
|
-
<div class="line"><a name="
|
|
1042
|
-
<div class="line"><a name="
|
|
1043
|
-
<div class="line"><a name="
|
|
1044
|
-
<div class="line"><a name="
|
|
1045
|
-
<div class="line"><a name="
|
|
1046
|
-
<div class="line"><a name="
|
|
1047
|
-
<div class="line"><a name="
|
|
1048
|
-
<div class="line"><a name="
|
|
1049
|
-
<div class="line"><a name="
|
|
1050
|
-
<div class="line"><a name="
|
|
1051
|
-
<div class="line"><a name="
|
|
1052
|
-
<div class="line"><a name="
|
|
1053
|
-
<div class="line"><a name="
|
|
1054
|
-
<div class="line"><a name="
|
|
1055
|
-
<div class="line"><a name="
|
|
1056
|
-
<div class="line"><a name="
|
|
1057
|
-
<div class="line"><a name="
|
|
1058
|
-
<div class="line"><a name="
|
|
1059
|
-
<div class="line"><a name="
|
|
1060
|
-
<div class="line"><a name="
|
|
1061
|
-
<div class="line"><a name="
|
|
1062
|
-
<div class="line"><a name="
|
|
1063
|
-
<div class="line"><a name="
|
|
1064
|
-
<div class="line"><a name="
|
|
1065
|
-
<div class="line"><a name="
|
|
1066
|
-
<div class="line"><a name="
|
|
1067
|
-
<div class="line"><a name="
|
|
1068
|
-
<div class="line"><a name="
|
|
1069
|
-
<div class="line"><a name="
|
|
1070
|
-
<div class="line"><a name="
|
|
1071
|
-
<div class="line"><a name="
|
|
1072
|
-
<div class="line"><a name="
|
|
1073
|
-
<div class="line"><a name="
|
|
1074
|
-
<div class="line"><a name="
|
|
1075
|
-
<div class="line"><a name="
|
|
1076
|
-
<div class="line"><a name="
|
|
1077
|
-
<div class="line"><a name="
|
|
1078
|
-
<div class="line"><a name="
|
|
1079
|
-
<div class="line"><a name="
|
|
1080
|
-
<div class="line"><a name="
|
|
1081
|
-
<div class="line"><a name="
|
|
1082
|
-
<div class="line"><a name="
|
|
1083
|
-
<div class="line"><a name="
|
|
1084
|
-
<div class="line"><a name="
|
|
1085
|
-
<div class="line"><a name="
|
|
1086
|
-
<div class="line"><a name="
|
|
1087
|
-
<div class="line"><a name="
|
|
1088
|
-
<div class="line"><a name="
|
|
1089
|
-
<div class="line"><a name="
|
|
1090
|
-
<div class="line"><a name="
|
|
1091
|
-
<div class="line"><a name="
|
|
1092
|
-
<div class="line"><a name="
|
|
1093
|
-
<div class="line"><a name="
|
|
1094
|
-
<div class="line"><a name="
|
|
1095
|
-
<div class="line"><a name="
|
|
1096
|
-
<div class="line"><a name="
|
|
1097
|
-
<div class="line"><a name="
|
|
1098
|
-
<div class="line"><a name="
|
|
1099
|
-
<div class="line"><a name="
|
|
1100
|
-
<div class="line"><a name="
|
|
1101
|
-
<div class="line"><a name="
|
|
1102
|
-
<div class="line"><a name="
|
|
1103
|
-
<div class="line"><a name="
|
|
1104
|
-
<div class="line"><a name="
|
|
1105
|
-
<div class="line"><a name="
|
|
1106
|
-
<div class="line"><a name="
|
|
1107
|
-
<div class="line"><a name="
|
|
1108
|
-
<div class="line"><a name="
|
|
1109
|
-
<div class="line"><a name="
|
|
1110
|
-
<div class="line"><a name="
|
|
1111
|
-
<div class="line"><a name="
|
|
1112
|
-
<div class="line"><a name="
|
|
1113
|
-
<div class="line"><a name="
|
|
1114
|
-
<div class="line"><a name="
|
|
1115
|
-
<div class="line"><a name="
|
|
1116
|
-
<div class="line"><a name="
|
|
1117
|
-
<div class="line"><a name="
|
|
1118
|
-
<div class="line"><a name="
|
|
1119
|
-
<div class="line"><a name="
|
|
1120
|
-
<div class="line"><a name="
|
|
1121
|
-
<div class="line"><a name="
|
|
1122
|
-
<div class="line"><a name="
|
|
1123
|
-
<div class="line"><a name="
|
|
1124
|
-
<div class="line"><a name="
|
|
1125
|
-
<div class="line"><a name="
|
|
1126
|
-
<div class="line"><a name="
|
|
1127
|
-
<div class="line"><a name="
|
|
1128
|
-
<div class="line"><a name="
|
|
1129
|
-
<div class="line"><a name="
|
|
1130
|
-
<div class="line"><a name="
|
|
1131
|
-
<div class="line"><a name="
|
|
1132
|
-
<div class="line"><a name="
|
|
1133
|
-
<div class="line"><a name="
|
|
1134
|
-
<div class="line"><a name="
|
|
1135
|
-
<div class="line"><a name="
|
|
1136
|
-
<div class="line"><a name="
|
|
1137
|
-
<div class="line"><a name="
|
|
1138
|
-
<div class="line"><a name="
|
|
1139
|
-
<div class="line"><a name="
|
|
1140
|
-
<div class="line"><a name="
|
|
1141
|
-
<div class="line"><a name="
|
|
1142
|
-
<div class="line"><a name="
|
|
1143
|
-
<div class="line"><a name="
|
|
1144
|
-
<div class="line"><a name="
|
|
1145
|
-
<div class="line"><a name="
|
|
1146
|
-
<div class="line"><a name="
|
|
1147
|
-
<div class="line"><a name="
|
|
1148
|
-
<div class="line"><a name="
|
|
1149
|
-
<div class="line"><a name="
|
|
1150
|
-
<div class="line"><a name="
|
|
1151
|
-
<div class="line"><a name="
|
|
1152
|
-
<div class="line"><a name="
|
|
1153
|
-
<div class="line"><a name="
|
|
1154
|
-
<div class="line"><a name="
|
|
1155
|
-
<div class="line"><a name="
|
|
1156
|
-
<div class="line"><a name="
|
|
1157
|
-
<div class="line"><a name="
|
|
1158
|
-
<div class="line"><a name="
|
|
1159
|
-
<div class="line"><a name="
|
|
1160
|
-
<div class="line"><a name="
|
|
1161
|
-
<div class="line"><a name="
|
|
1162
|
-
<div class="line"><a name="
|
|
1163
|
-
<div class="line"><a name="
|
|
1164
|
-
<div class="line"><a name="
|
|
1165
|
-
<div class="line"><a name="
|
|
1166
|
-
<div class="line"><a name="
|
|
1167
|
-
<div class="line"><a name="
|
|
1168
|
-
<div class="line"><a name="
|
|
1169
|
-
<div class="line"><a name="
|
|
1170
|
-
<div class="line"><a name="
|
|
1171
|
-
<div class="line"><a name="
|
|
1172
|
-
<div class="line"><a name="
|
|
1173
|
-
<div class="line"><a name="
|
|
1174
|
-
<div class="line"><a name="
|
|
1175
|
-
<div class="line"><a name="
|
|
1176
|
-
<div class="line"><a name="
|
|
1177
|
-
<div class="line"><a name="
|
|
1178
|
-
<div class="line"><a name="
|
|
1179
|
-
<div class="line"><a name="
|
|
1180
|
-
<div class="line"><a name="
|
|
1181
|
-
<div class="line"><a name="
|
|
1182
|
-
<div class="line"><a name="
|
|
1183
|
-
<div class="line"><a name="
|
|
1184
|
-
<div class="line"><a name="
|
|
1185
|
-
<div class="line"><a name="
|
|
1186
|
-
<div class="line"><a name="
|
|
1187
|
-
<div class="line"><a name="
|
|
1188
|
-
<div class="line"><a name="
|
|
1189
|
-
<div class="line"><a name="
|
|
1190
|
-
<div class="line"><a name="
|
|
1191
|
-
<div class="line"><a name="
|
|
1192
|
-
<div class="line"><a name="
|
|
1193
|
-
<div class="line"><a name="
|
|
1194
|
-
<div class="line"><a name="
|
|
1195
|
-
<div class="line"><a name="
|
|
1196
|
-
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> <span class="keyword"></span>{</div>
|
|
1197
|
-
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
1198
|
-
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  llvm::raw_string_ostream rawstr(str);</div>
|
|
1199
|
-
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a>* fun = SVFUtil::dyn_cast<SVFFunction>(<span class="keyword">this</span>))</div>
|
|
1200
|
-
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  {</div>
|
|
1201
|
-
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  rawstr << <span class="stringliteral">"Function: "</span> << fun->getName() << <span class="stringliteral">" "</span>;</div>
|
|
1202
|
-
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  }</div>
|
|
1203
|
-
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bb = SVFUtil::dyn_cast<SVFBasicBlock>(<span class="keyword">this</span>))</div>
|
|
1204
|
-
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  {</div>
|
|
1205
|
-
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  rawstr << <span class="stringliteral">"BasicBlock: "</span> << bb->getName() << <span class="stringliteral">" "</span>;</div>
|
|
996
|
+
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  </div>
|
|
997
|
+
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  <span class="keywordflow">return</span> ret;</div>
|
|
998
|
+
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span> }</div>
|
|
999
|
+
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  </div>
|
|
1000
|
+
<div class="line"><a name="l00989"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0"> 989</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">LLVMUtil::getVCallThisPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
|
|
1001
|
+
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span> {</div>
|
|
1002
|
+
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="keywordflow">if</span> (cs->paramHasAttr(0, llvm::Attribute::StructRet))</div>
|
|
1003
|
+
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  {</div>
|
|
1004
|
+
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <span class="keywordflow">return</span> cs->getArgOperand(1);</div>
|
|
1005
|
+
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  }</div>
|
|
1006
|
+
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <span class="keywordflow">else</span></div>
|
|
1007
|
+
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  {</div>
|
|
1008
|
+
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <span class="keywordflow">return</span> cs->getArgOperand(0);</div>
|
|
1009
|
+
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  }</div>
|
|
1010
|
+
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span> }</div>
|
|
1011
|
+
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  </div>
|
|
1012
|
+
<div class="line"><a name="l01015"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce"> 1015</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce">LLVMUtil::isSameThisPtrInConstructor</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* thisPtr1,</div>
|
|
1013
|
+
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisPtr2)</div>
|
|
1014
|
+
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> {</div>
|
|
1015
|
+
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="keywordflow">if</span> (thisPtr1 == thisPtr2)</div>
|
|
1016
|
+
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
1017
|
+
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisU : thisPtr1->users())</div>
|
|
1018
|
+
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  {</div>
|
|
1019
|
+
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast<StoreInst>(thisU))</div>
|
|
1020
|
+
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  {</div>
|
|
1021
|
+
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* storeU : store->getPointerOperand()->users())</div>
|
|
1022
|
+
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  {</div>
|
|
1023
|
+
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</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>(storeU))</div>
|
|
1024
|
+
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  {</div>
|
|
1025
|
+
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  <span class="keywordflow">if</span> (load->getNextNode() &&</div>
|
|
1026
|
+
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  SVFUtil::isa<CastInst>(load->getNextNode()))</div>
|
|
1027
|
+
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  <span class="keywordflow">return</span> SVFUtil::cast<CastInst>(load->getNextNode()) ==</div>
|
|
1028
|
+
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  (thisPtr2->stripPointerCasts());</div>
|
|
1029
|
+
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  }</div>
|
|
1030
|
+
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  }</div>
|
|
1031
|
+
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  }</div>
|
|
1032
|
+
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  }</div>
|
|
1033
|
+
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1034
|
+
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> }</div>
|
|
1035
|
+
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  </div>
|
|
1036
|
+
<div class="line"><a name="l01039"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#addcfb0135655706a86f6cc628475fccf"> 1039</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#addcfb0135655706a86f6cc628475fccf">LLVMUtil::getConstructorThisPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div>
|
|
1037
|
+
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> {</div>
|
|
1038
|
+
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  assert((<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(fun) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(fun)) &&</div>
|
|
1039
|
+
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <span class="stringliteral">"not a constructor?"</span>);</div>
|
|
1040
|
+
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  assert(fun->arg_size() >= 1 && <span class="stringliteral">"argument size >= 1?"</span>);</div>
|
|
1041
|
+
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* thisPtr = &*(fun->arg_begin());</div>
|
|
1042
|
+
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="keywordflow">return</span> thisPtr;</div>
|
|
1043
|
+
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> }</div>
|
|
1044
|
+
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  </div>
|
|
1045
|
+
<div class="line"><a name="l01048"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72"> 1048</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
1046
|
+
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> {</div>
|
|
1047
|
+
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->isDeclaration())</div>
|
|
1048
|
+
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1049
|
+
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getName().str();</div>
|
|
1050
|
+
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
|
|
1051
|
+
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  {</div>
|
|
1052
|
+
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1053
|
+
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  }</div>
|
|
1054
|
+
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
|
|
1055
|
+
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
|
|
1056
|
+
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  {</div>
|
|
1057
|
+
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1058
|
+
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  }</div>
|
|
1059
|
+
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
|
|
1060
|
+
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
|
|
1061
|
+
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">"::"</span>);</div>
|
|
1062
|
+
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <span class="keywordflow">if</span> (colon == std::string::npos)</div>
|
|
1063
|
+
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  {</div>
|
|
1064
|
+
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
|
|
1065
|
+
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  }</div>
|
|
1066
|
+
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <span class="keywordflow">else</span></div>
|
|
1067
|
+
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  {</div>
|
|
1068
|
+
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
|
|
1069
|
+
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
|
|
1070
|
+
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  }</div>
|
|
1071
|
+
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() > 0 &&</div>
|
|
1072
|
+
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>) == 0;</div>
|
|
1073
|
+
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> }</div>
|
|
1074
|
+
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  </div>
|
|
1075
|
+
<div class="line"><a name="l01079"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754"> 1079</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
1076
|
+
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> {</div>
|
|
1077
|
+
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->isDeclaration())</div>
|
|
1078
|
+
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1079
|
+
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getName().str();</div>
|
|
1080
|
+
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
|
|
1081
|
+
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  {</div>
|
|
1082
|
+
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1083
|
+
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  }</div>
|
|
1084
|
+
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
|
|
1085
|
+
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
|
|
1086
|
+
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  {</div>
|
|
1087
|
+
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1088
|
+
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  }</div>
|
|
1089
|
+
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
|
|
1090
|
+
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
|
|
1091
|
+
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">"::"</span>);</div>
|
|
1092
|
+
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <span class="keywordflow">if</span> (colon == std::string::npos)</div>
|
|
1093
|
+
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  {</div>
|
|
1094
|
+
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
|
|
1095
|
+
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  }</div>
|
|
1096
|
+
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="keywordflow">else</span></div>
|
|
1097
|
+
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  {</div>
|
|
1098
|
+
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
|
|
1099
|
+
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
|
|
1100
|
+
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  }</div>
|
|
1101
|
+
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <span class="keywordflow">return</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() > 0 && dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() > 0 &&</div>
|
|
1102
|
+
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() + 1 == dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &&</div>
|
|
1103
|
+
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.compare(0, 1, <span class="stringliteral">"~"</span>) == 0 &&</div>
|
|
1104
|
+
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.substr(1)) == 0);</div>
|
|
1105
|
+
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> }</div>
|
|
1106
|
+
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  </div>
|
|
1107
|
+
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> <span class="comment">/*</span></div>
|
|
1108
|
+
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> <span class="comment"> * get the ptr "vtable" for a given virtual callsite:</span></div>
|
|
1109
|
+
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> <span class="comment"> * %vtable = load ...</span></div>
|
|
1110
|
+
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> <span class="comment"> * %vfn = getelementptr %vtable, idx</span></div>
|
|
1111
|
+
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> <span class="comment"> * %x = load %vfn</span></div>
|
|
1112
|
+
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> <span class="comment"> * call %x (...)</span></div>
|
|
1113
|
+
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> <span class="comment"> */</span></div>
|
|
1114
|
+
<div class="line"><a name="l01118"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77"> 1118</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">LLVMUtil::getVCallVtblPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
|
|
1115
|
+
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> {</div>
|
|
1116
|
+
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* loadInst =</div>
|
|
1117
|
+
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  SVFUtil::dyn_cast<LoadInst>(cs->getCalledOperand());</div>
|
|
1118
|
+
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  assert(loadInst != <span class="keyword">nullptr</span>);</div>
|
|
1119
|
+
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = loadInst->getPointerOperand();</div>
|
|
1120
|
+
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gepInst =</div>
|
|
1121
|
+
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  SVFUtil::dyn_cast<GetElementPtrInst>(vfuncptr);</div>
|
|
1122
|
+
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  assert(gepInst != <span class="keyword">nullptr</span>);</div>
|
|
1123
|
+
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = gepInst->getPointerOperand();</div>
|
|
1124
|
+
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <span class="keywordflow">return</span> vtbl;</div>
|
|
1125
|
+
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span> }</div>
|
|
1126
|
+
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  </div>
|
|
1127
|
+
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> <span class="comment">/*</span></div>
|
|
1128
|
+
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span> <span class="comment"> * Is this virtual call inside its own constructor or destructor?</span></div>
|
|
1129
|
+
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span> <span class="comment"> */</span></div>
|
|
1130
|
+
<div class="line"><a name="l01134"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a898e9c2ed163b618f2e86bc251131d8b"> 1134</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a898e9c2ed163b618f2e86bc251131d8b">LLVMUtil::VCallInCtorOrDtor</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
|
|
1131
|
+
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span> {</div>
|
|
1132
|
+
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> classNameOfThisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">LLVMUtil::getClassNameOfThisPtr</a>(cs);</div>
|
|
1133
|
+
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = cs->getCaller();</div>
|
|
1134
|
+
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(func) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(func))</div>
|
|
1135
|
+
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  {</div>
|
|
1136
|
+
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(func->getName().str());</div>
|
|
1137
|
+
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <span class="keywordflow">if</span> (classNameOfThisPtr.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>) == 0)</div>
|
|
1138
|
+
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
1139
|
+
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  }</div>
|
|
1140
|
+
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1141
|
+
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> }</div>
|
|
1142
|
+
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  </div>
|
|
1143
|
+
<div class="line"><a name="l01147"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6"> 1147</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">LLVMUtil::getClassNameFromType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ty)</div>
|
|
1144
|
+
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> {</div>
|
|
1145
|
+
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <span class="stringliteral">""</span>;</div>
|
|
1146
|
+
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrType = SVFUtil::dyn_cast<PointerType>(ty))</div>
|
|
1147
|
+
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  {</div>
|
|
1148
|
+
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemType = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrType);</div>
|
|
1149
|
+
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType>(elemType) &&</div>
|
|
1150
|
+
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  !((SVFUtil::cast<StructType>(elemType))->isLiteral()))</div>
|
|
1151
|
+
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  {</div>
|
|
1152
|
+
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> elemTypeName = elemType->getStructName().str();</div>
|
|
1153
|
+
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>) == 0)</div>
|
|
1154
|
+
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  {</div>
|
|
1155
|
+
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size());</div>
|
|
1156
|
+
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  }</div>
|
|
1157
|
+
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>) ==</div>
|
|
1158
|
+
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  0)</div>
|
|
1159
|
+
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  {</div>
|
|
1160
|
+
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size());</div>
|
|
1161
|
+
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  }</div>
|
|
1162
|
+
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  }</div>
|
|
1163
|
+
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  }</div>
|
|
1164
|
+
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <span class="keywordflow">return</span> className;</div>
|
|
1165
|
+
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> }</div>
|
|
1166
|
+
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  </div>
|
|
1167
|
+
<div class="line"><a name="l01171"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f"> 1171</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">LLVMUtil::getClassNameOfThisPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* inst)</div>
|
|
1168
|
+
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> {</div>
|
|
1169
|
+
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> thisPtrClassName;</div>
|
|
1170
|
+
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst->getMetadata(<span class="stringliteral">"VCallPtrType"</span>))</div>
|
|
1171
|
+
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  {</div>
|
|
1172
|
+
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast<MDString>(N->getOperand(0).get());</div>
|
|
1173
|
+
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  thisPtrClassName = mdstr->getString().str();</div>
|
|
1174
|
+
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  }</div>
|
|
1175
|
+
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <span class="keywordflow">if</span> (thisPtrClassName.size() == 0)</div>
|
|
1176
|
+
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  {</div>
|
|
1177
|
+
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">LLVMUtil::getVCallThisPtr</a>(inst);</div>
|
|
1178
|
+
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  thisPtrClassName = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">getClassNameFromType</a>(thisPtr->getType());</div>
|
|
1179
|
+
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  }</div>
|
|
1180
|
+
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  </div>
|
|
1181
|
+
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  <span class="keywordtype">size_t</span> found = thisPtrClassName.find_last_not_of(<span class="stringliteral">"0123456789"</span>);</div>
|
|
1182
|
+
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="keywordflow">if</span> (found != std::string::npos)</div>
|
|
1183
|
+
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  {</div>
|
|
1184
|
+
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  <span class="keywordflow">if</span> (found != thisPtrClassName.size() - 1 &&</div>
|
|
1185
|
+
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  thisPtrClassName[found] == <span class="charliteral">'.'</span>)</div>
|
|
1186
|
+
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  {</div>
|
|
1187
|
+
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  <span class="keywordflow">return</span> thisPtrClassName.substr(0, found);</div>
|
|
1188
|
+
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  }</div>
|
|
1189
|
+
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  }</div>
|
|
1190
|
+
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  </div>
|
|
1191
|
+
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <span class="keywordflow">return</span> thisPtrClassName;</div>
|
|
1192
|
+
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> }</div>
|
|
1193
|
+
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  </div>
|
|
1194
|
+
<div class="line"><a name="l01198"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9"> 1198</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">LLVMUtil::getFunNameOfVCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* inst)</div>
|
|
1195
|
+
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> {</div>
|
|
1196
|
+
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName;</div>
|
|
1197
|
+
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst->getMetadata(<span class="stringliteral">"VCallFunName"</span>))</div>
|
|
1198
|
+
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  {</div>
|
|
1199
|
+
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast<MDString>(N->getOperand(0).get());</div>
|
|
1200
|
+
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  funName = mdstr->getString().str();</div>
|
|
1206
1201
|
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  }</div>
|
|
1207
|
-
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  <span class="keywordflow">
|
|
1208
|
-
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span> 
|
|
1209
|
-
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> 
|
|
1210
|
-
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span> 
|
|
1211
|
-
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> 
|
|
1212
|
-
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> 
|
|
1213
|
-
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> 
|
|
1214
|
-
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span> 
|
|
1215
|
-
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span> 
|
|
1216
|
-
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <span class="
|
|
1217
|
-
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> 
|
|
1218
|
-
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> 
|
|
1219
|
-
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> 
|
|
1202
|
+
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  <span class="keywordflow">return</span> funName;</div>
|
|
1203
|
+
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span> }</div>
|
|
1204
|
+
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  </div>
|
|
1205
|
+
<div class="line"><a name="l01209"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770"> 1209</a></span> <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">LLVMUtil::getVCallIdx</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
|
|
1206
|
+
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> {</div>
|
|
1207
|
+
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst =</div>
|
|
1208
|
+
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  SVFUtil::dyn_cast<LoadInst>(cs->getCalledOperand());</div>
|
|
1209
|
+
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  assert(vfuncloadinst != <span class="keyword">nullptr</span>);</div>
|
|
1210
|
+
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst->getPointerOperand();</div>
|
|
1211
|
+
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
|
|
1212
|
+
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  SVFUtil::dyn_cast<GetElementPtrInst>(vfuncptr);</div>
|
|
1213
|
+
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  User::const_op_iterator oi = vfuncptrgepinst->idx_begin();</div>
|
|
1214
|
+
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* idx = SVFUtil::dyn_cast<ConstantInt>(oi->get());</div>
|
|
1215
|
+
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> idx_value;</div>
|
|
1216
|
+
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  <span class="keywordflow">if</span> (idx == <span class="keyword">nullptr</span>)</div>
|
|
1217
|
+
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  {</div>
|
|
1218
|
+
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"vcall gep idx not constantint\n"</span>;</div>
|
|
1219
|
+
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  idx_value = 0;</div>
|
|
1220
|
+
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  }</div>
|
|
1221
|
+
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  <span class="keywordflow">else</span></div>
|
|
1222
|
+
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  {</div>
|
|
1223
|
+
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  idx_value = (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)idx->getSExtValue();</div>
|
|
1224
|
+
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  }</div>
|
|
1225
|
+
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  <span class="keywordflow">return</span> idx_value;</div>
|
|
1226
|
+
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span> }</div>
|
|
1227
|
+
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  </div>
|
|
1228
|
+
<div class="line"><a name="l01232"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f"> 1232</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">LLVMUtil::getSuccBBandCondValPairVec</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> &switchInst, <a class="code" href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SuccBBAndCondValPairVec</a> &vec)</div>
|
|
1229
|
+
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span> {</div>
|
|
1230
|
+
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  <span class="comment">// get default successor basic block and default case value (nullptr)</span></div>
|
|
1231
|
+
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
|
|
1232
|
+
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  </div>
|
|
1233
|
+
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  <span class="comment">// get normal case value and it's successor basic block</span></div>
|
|
1234
|
+
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& cs : switchInst.cases())</div>
|
|
1235
|
+
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
|
|
1236
|
+
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span> }</div>
|
|
1237
|
+
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  </div>
|
|
1238
|
+
<div class="line"><a name="l01242"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220"> 1242</a></span> <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">LLVMUtil::getCaseValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> &switchInst, <a class="code" href="namespaceSVF.html#a255efa5be786996cbdd0c1f3d98b8400">SuccBBAndCondValPair</a> &succBB2CondVal)</div>
|
|
1239
|
+
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> {</div>
|
|
1240
|
+
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succBB = succBB2CondVal.first;</div>
|
|
1241
|
+
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* caseValue = succBB2CondVal.second;</div>
|
|
1242
|
+
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val;</div>
|
|
1243
|
+
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  <span class="keywordflow">if</span> (caseValue == <span class="keyword">nullptr</span> || succBB == switchInst.getDefaultDest())</div>
|
|
1244
|
+
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  {</div>
|
|
1245
|
+
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  val = -1;</div>
|
|
1246
|
+
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  }</div>
|
|
1247
|
+
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  <span class="keywordflow">else</span></div>
|
|
1248
|
+
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  {</div>
|
|
1249
|
+
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  <span class="keywordflow">if</span> (caseValue->getBitWidth() <= 64)</div>
|
|
1250
|
+
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  {</div>
|
|
1251
|
+
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  val = caseValue->getSExtValue();</div>
|
|
1252
|
+
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  }</div>
|
|
1253
|
+
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  <span class="keywordflow">else</span></div>
|
|
1254
|
+
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  {</div>
|
|
1255
|
+
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  val = -1;</div>
|
|
1256
|
+
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  }</div>
|
|
1257
|
+
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  }</div>
|
|
1258
|
+
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  <span class="keywordflow">return</span> val;</div>
|
|
1259
|
+
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span> }</div>
|
|
1260
|
+
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  </div>
|
|
1261
|
+
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div>
|
|
1262
|
+
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> {</div>
|
|
1263
|
+
<div class="line"><a name="l01271"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3"> 1271</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVFValue::toString</a>()<span class="keyword"> const</span></div>
|
|
1264
|
+
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> <span class="keyword"></span>{</div>
|
|
1265
|
+
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
1266
|
+
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  llvm::raw_string_ostream rawstr(str);</div>
|
|
1267
|
+
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a>* fun = SVFUtil::dyn_cast<SVFFunction>(<span class="keyword">this</span>))</div>
|
|
1268
|
+
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  {</div>
|
|
1269
|
+
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  rawstr << <span class="stringliteral">"Function: "</span> << fun->getName() << <span class="stringliteral">" "</span>;</div>
|
|
1270
|
+
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  }</div>
|
|
1271
|
+
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bb = SVFUtil::dyn_cast<SVFBasicBlock>(<span class="keyword">this</span>))</div>
|
|
1272
|
+
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  {</div>
|
|
1273
|
+
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  rawstr << <span class="stringliteral">"BasicBlock: "</span> << bb->getName() << <span class="stringliteral">" "</span>;</div>
|
|
1274
|
+
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  }</div>
|
|
1275
|
+
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  <span class="keywordflow">else</span></div>
|
|
1276
|
+
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  {</div>
|
|
1277
|
+
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  <span class="keyword">auto</span> llvmVal = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#aaf9b679407f12b93afc53c157d37b444">getLLVMValue</a>(<span class="keyword">this</span>);</div>
|
|
1278
|
+
<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  <span class="keywordflow">if</span> (llvmVal)</div>
|
|
1279
|
+
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  rawstr << <span class="stringliteral">" "</span> << *llvmVal << <span class="stringliteral">" "</span>;</div>
|
|
1280
|
+
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  <span class="keywordflow">else</span></div>
|
|
1281
|
+
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  rawstr << <span class="stringliteral">" No llvmVal found"</span>;</div>
|
|
1282
|
+
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  }</div>
|
|
1283
|
+
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  rawstr << this-><a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>();</div>
|
|
1284
|
+
<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
1285
|
+
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span> }</div>
|
|
1286
|
+
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  </div>
|
|
1287
|
+
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> } <span class="comment">// namespace SVF</span></div>
|
|
1220
1288
|
</div><!-- fragment --></div><!-- contents -->
|
|
1221
1289
|
<div class="ttc" id="anamespaceSVF_html_a827d09974dc7bf0849f96823cc2fee89"><div class="ttname"><a href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">SVF::DomTreeNode</a></div><div class="ttdeci">llvm::DomTreeNode DomTreeNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
|
|
1222
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1290
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00667">LLVMUtil.cpp:667</a></div></div>
|
|
1223
1291
|
<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>
|
|
1224
1292
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abc9c437b7da5cfe3d988dadfcbd0635f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abc9c437b7da5cfe3d988dadfcbd0635f">SVF::LLVMUtil::viewCFG</a></div><div class="ttdeci">void viewCFG(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00232">LLVMUtil.cpp:232</a></div></div>
|
|
1225
1293
|
<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>
|
|
@@ -1231,49 +1299,52 @@ $(function() {
|
|
|
1231
1299
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aaf9b679407f12b93afc53c157d37b444"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aaf9b679407f12b93afc53c157d37b444">SVF::LLVMModuleSet::getLLVMValue</a></div><div class="ttdeci">const Value * getLLVMValue(const SVFValue *value) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00191">LLVMModule.h:191</a></div></div>
|
|
1232
1300
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a16d14e6712866d1d710c386c72d67181"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a16d14e6712866d1d710c386c72d67181">SVF::LLVMModuleSet::FunctionSetType</a></div><div class="ttdeci">std::vector< const Function * > FunctionSetType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00050">LLVMModule.h:50</a></div></div>
|
|
1233
1301
|
<div class="ttc" id="aLLVMUtil_8cpp_html_a5f8da60b0fcc28445f508f4e42513a82"><div class="ttname"><a href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a></div><div class="ttdeci">const std::string clsName</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00043">LLVMUtil.cpp:43</a></div></div>
|
|
1234
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a08fbef6fe3e2af96a49f79ce23accb01"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">SVF::LLVMUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1302
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a08fbef6fe3e2af96a49f79ce23accb01"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">SVF::LLVMUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00890">LLVMUtil.cpp:890</a></div></div>
|
|
1235
1303
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &arg_num, char **arg_value, std::vector< std::string > &moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00417">LLVMUtil.cpp:417</a></div></div>
|
|
1236
1304
|
<div class="ttc" id="aLLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
|
|
1237
1305
|
<div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00097">SVFType.h:97</a></div></div>
|
|
1238
1306
|
<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>
|
|
1239
|
-
<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#
|
|
1307
|
+
<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#l01232">LLVMUtil.cpp:1232</a></div></div>
|
|
1240
1308
|
<div class="ttc" id="anamespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
|
|
1241
1309
|
<div class="ttc" id="anamespaceSVF_html_a3d9e7f32dc17fe8d40f8d6a011403b91"><div class="ttname"><a href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">SVF::IntegerType</a></div><div class="ttdeci">llvm::IntegerType IntegerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
|
|
1242
1310
|
<div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html">SVF::cppUtil::DemangledName</a></div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00046">CppUtil.h:46</a></div></div>
|
|
1243
1311
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a9815a5b31ac7dc21239d08e5b9f61106"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVF::SVFUtil::getSVFCallSite</a></div><div class="ttdeci">CallSite getSVFCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Return LLVM callsite given an instruction.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
|
|
1244
1312
|
<div class="ttc" id="anamespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
|
|
1245
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a898e9c2ed163b618f2e86bc251131d8b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a898e9c2ed163b618f2e86bc251131d8b">SVF::LLVMUtil::VCallInCtorOrDtor</a></div><div class="ttdeci">bool VCallInCtorOrDtor(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1313
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a898e9c2ed163b618f2e86bc251131d8b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a898e9c2ed163b618f2e86bc251131d8b">SVF::LLVMUtil::VCallInCtorOrDtor</a></div><div class="ttdeci">bool VCallInCtorOrDtor(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01134">LLVMUtil.cpp:1134</a></div></div>
|
|
1246
1314
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07bd47ccfd02c5a2a6db26b537b2184f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">SVF::LLVMUtil::stripConstantCasts</a></div><div class="ttdeci">const Value * stripConstantCasts(const Value *val)</div><div class="ttdoc">Strip off the constant casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00220">LLVMUtil.cpp:220</a></div></div>
|
|
1247
1315
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2c61d741afbcfa853b505cd391f29f9b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">SVF::LLVMUtil::isUncalledFunction</a></div><div class="ttdeci">bool isUncalledFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller?</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00142">LLVMUtil.cpp:142</a></div></div>
|
|
1248
1316
|
<div class="ttc" id="anamespaceSVF_html_a412280b134578905248ce0122c5db7c9"><div class="ttname"><a href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SVF::SwitchInst</a></div><div class="ttdeci">llvm::SwitchInst SwitchInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00153">BasicTypes.h:153</a></div></div>
|
|
1249
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1250
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1317
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01192">LLVMModule.cpp:1192</a></div></div>
|
|
1318
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00841">LLVMUtil.cpp:841</a></div></div>
|
|
1251
1319
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00198">LLVMModule.h:198</a></div></div>
|
|
1252
1320
|
<div class="ttc" id="anamespaceSVF_html_a52c8654c221bb53a59f70ea3cb1e5c45"><div class="ttname"><a href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">SVF::StructLayout</a></div><div class="ttdeci">llvm::StructLayout StructLayout</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00103">BasicTypes.h:103</a></div></div>
|
|
1321
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae2b444bb3e7a27d77386f588a78af8e2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">SVF::LLVMUtil::removeUnusedGlobalVariables</a></div><div class="ttdeci">void removeUnusedGlobalVariables(Module *module)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00581">LLVMUtil.cpp:581</a></div></div>
|
|
1253
1322
|
<div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
|
|
1254
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a41e64f3318e2bf368eebe9a104ef6ad9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">SVF::LLVMUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1323
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a41e64f3318e2bf368eebe9a104ef6ad9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">SVF::LLVMUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01198">LLVMUtil.cpp:1198</a></div></div>
|
|
1255
1324
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00442">SVFUtil.h:442</a></div></div>
|
|
1256
1325
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a651b6a1cf3665277d2241220bb145aed"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">SVF::LLVMUtil::functionDoesNotRet</a></div><div class="ttdeci">bool functionDoesNotRet(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00104">LLVMUtil.cpp:104</a></div></div>
|
|
1257
1326
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a47d2af43ff12d9e1014fa19256619466"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">SVF::LLVMUtil::getCalledFunctions</a></div><div class="ttdeci">std::vector< const Function * > getCalledFunctions(const Function *F)</div><div class="ttdoc">Get all called funcions in a parent function.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00547">LLVMUtil.cpp:547</a></div></div>
|
|
1327
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a0ecff33105811b1e5ebc83afee76da27"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a0ecff33105811b1e5ebc83afee76da27">SVF::LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a></div><div class="ttdeci">void removeUnusedFuncsAndAnnotationsAndGlobalVariables(std::vector< Function * > removedFuncList)</div><div class="ttdoc">Delete unused functions, annotations and global variables in extapi.bc.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00596">LLVMUtil.cpp:596</a></div></div>
|
|
1258
1328
|
<div class="ttc" id="anamespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00251">BasicTypes.h:251</a></div></div>
|
|
1259
|
-
<div class="ttc" id="
|
|
1329
|
+
<div class="ttc" id="aclassSVF_1_1Options_html_a2ed1e6f7911ae5cfbf79213e4d07531e"><div class="ttname"><a href="classSVF_1_1Options.html#a2ed1e6f7911ae5cfbf79213e4d07531e">SVF::Options::ExtAPIInput</a></div><div class="ttdeci">static const Option< std::string > ExtAPIInput</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00251">Options.h:251</a></div></div>
|
|
1330
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa4a604e47daaaf95babc7aca68991000"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa4a604e47daaaf95babc7aca68991000">SVF::LLVMModuleSet::getDeclaration</a></div><div class="ttdeci">const FunctionSetType & getDeclaration(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00297">LLVMModule.h:297</a></div></div>
|
|
1260
1331
|
<div class="ttc" id="anamespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
|
|
1261
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4f803756f0a73e8564d9544ce27be1c9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4f803756f0a73e8564d9544ce27be1c9">SVF::LLVMUtil::getVtblStruct</a></div><div class="ttdeci">const ConstantStruct * getVtblStruct(const GlobalValue *vtbl)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1332
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4f803756f0a73e8564d9544ce27be1c9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4f803756f0a73e8564d9544ce27be1c9">SVF::LLVMUtil::getVtblStruct</a></div><div class="ttdeci">const ConstantStruct * getVtblStruct(const GlobalValue *vtbl)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00877">LLVMUtil.cpp:877</a></div></div>
|
|
1262
1333
|
<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>
|
|
1263
|
-
<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#
|
|
1334
|
+
<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#l01242">LLVMUtil.cpp:1242</a></div></div>
|
|
1264
1335
|
<div class="ttc" id="anamespaceSVF_html_a5ae718cba37d8e34d2946530dc098c8e"><div class="ttname"><a href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">SVF::ConstantArray</a></div><div class="ttdeci">llvm::ConstantArray ConstantArray</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00121">BasicTypes.h:121</a></div></div>
|
|
1265
1336
|
<div class="ttc" id="anamespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00081">BasicTypes.h:81</a></div></div>
|
|
1266
1337
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab0c0f321b6bfbfab2e4ff06d81920ab9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">SVF::LLVMModuleSet::getSVFBasicBlock</a></div><div class="ttdeci">SVFBasicBlock * getSVFBasicBlock(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00205">LLVMModule.h:205</a></div></div>
|
|
1267
1338
|
<div class="ttc" id="anamespaceSVF_html_a5a6e8ab900d5cd17ef72661006a7fbe0"><div class="ttname"><a href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">SVF::LoadInst</a></div><div class="ttdeci">llvm::LoadInst LoadInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00147">BasicTypes.h:147</a></div></div>
|
|
1268
1339
|
<div class="ttc" id="anamespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
|
|
1269
1340
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a837d19c740902c419206287bdb21273b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">SVF::LLVMUtil::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00337">LLVMUtil.cpp:337</a></div></div>
|
|
1270
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_addcfb0135655706a86f6cc628475fccf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#addcfb0135655706a86f6cc628475fccf">SVF::LLVMUtil::getConstructorThisPtr</a></div><div class="ttdeci">const Argument * getConstructorThisPtr(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1271
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a68e7bad8eb537039559d8ddc851032e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">SVF::LLVMUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1341
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_addcfb0135655706a86f6cc628475fccf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#addcfb0135655706a86f6cc628475fccf">SVF::LLVMUtil::getConstructorThisPtr</a></div><div class="ttdeci">const Argument * getConstructorThisPtr(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01039">LLVMUtil.cpp:1039</a></div></div>
|
|
1342
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a68e7bad8eb537039559d8ddc851032e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">SVF::LLVMUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00989">LLVMUtil.cpp:989</a></div></div>
|
|
1272
1343
|
<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>
|
|
1273
1344
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00490">SVFValue.h:490</a></div></div>
|
|
1274
1345
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00150">SVFValue.h:150</a></div></div>
|
|
1275
1346
|
<div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
1276
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8873eb1cce9496f9699eab22c4a6d3ce"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce">SVF::LLVMUtil::isSameThisPtrInConstructor</a></div><div class="ttdeci">bool isSameThisPtrInConstructor(const Argument *thisPtr1, const Value *thisPtr2)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1347
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8873eb1cce9496f9699eab22c4a6d3ce"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce">SVF::LLVMUtil::isSameThisPtrInConstructor</a></div><div class="ttdeci">bool isSameThisPtrInConstructor(const Argument *thisPtr1, const Value *thisPtr2)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01015">LLVMUtil.cpp:1015</a></div></div>
|
|
1277
1348
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07c785d931cef3c61e3dab4c615770be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">SVF::LLVMUtil::isPtrInUncalledFunction</a></div><div class="ttdeci">bool isPtrInUncalledFunction(const Value *value)</div><div class="ttdoc">Return true if this is value in a dead function (function without any caller)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00175">LLVMUtil.cpp:175</a></div></div>
|
|
1278
1349
|
<div class="ttc" id="anamespaceSVF_html_a334998718813a19a7697daf4ba282faf"><div class="ttname"><a href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">SVF::Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
1279
1350
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ac9d6aff1a5e778e45c51b4f3b6d787e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">SVF::LLVMUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const Function *fun)</div><div class="ttdoc">Check whether a function is an entry function (i.e., main)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00102">LLVMUtil.h:102</a></div></div>
|
|
@@ -1283,9 +1354,9 @@ $(function() {
|
|
|
1283
1354
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aedfa6e9216c6c788c26aef1967689b76"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVF::SVFUtil::isHeapAllocExtCallViaArg</a></div><div class="ttdeci">bool isHeapAllocExtCallViaArg(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00431">SVFUtil.h:431</a></div></div>
|
|
1284
1355
|
<div class="ttc" id="anamespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00085">BasicTypes.h:85</a></div></div>
|
|
1285
1356
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a745a2addadc136075d45c7fb8437af3e"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">SVF::cppUtil::demangle</a></div><div class="ttdeci">struct DemangledName demangle(const std::string &name)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00153">CppUtil.cpp:153</a></div></div>
|
|
1286
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3a23aa54459a068e16c96e5b5eb72f77"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">SVF::LLVMUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1357
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3a23aa54459a068e16c96e5b5eb72f77"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">SVF::LLVMUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01118">LLVMUtil.cpp:1118</a></div></div>
|
|
1287
1358
|
<div class="ttc" id="acJSON_8cpp_html_a930920b2bc42824a5c03be681830f4b2"><div class="ttname"><a href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a></div><div class="ttdeci">return true</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02295">cJSON.cpp:2295</a></div></div>
|
|
1288
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8a77403306e97ab4cb31a56d38bba5be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">SVF::LLVMUtil::isConstDataOrAggData</a></div><div class="ttdeci">bool isConstDataOrAggData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
1359
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8a77403306e97ab4cb31a56d38bba5be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">SVF::LLVMUtil::isConstDataOrAggData</a></div><div class="ttdeci">bool isConstDataOrAggData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00408">LLVMUtil.h:408</a></div></div>
|
|
1289
1360
|
<div class="ttc" id="anamespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00092">BasicTypes.h:92</a></div></div>
|
|
1290
1361
|
<div class="ttc" id="anamespaceSVF_html_a2b28f48dde0a9a91d251e654ce1f9477"><div class="ttname"><a href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">SVF::ConstantStruct</a></div><div class="ttdeci">llvm::ConstantStruct ConstantStruct</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00104">BasicTypes.h:104</a></div></div>
|
|
1291
1362
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00270">SVFValue.h:270</a></div></div>
|
|
@@ -1295,7 +1366,7 @@ $(function() {
|
|
|
1295
1366
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a523a8c3f9bfaea178733822ac598d552"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a523a8c3f9bfaea178733822ac598d552">SVF::LLVMUtil::removeFunAnnotations</a></div><div class="ttdeci">void removeFunAnnotations(std::vector< Function * > &removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00485">LLVMUtil.cpp:485</a></div></div>
|
|
1296
1367
|
<div class="ttc" id="anamespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00110">BasicTypes.h:110</a></div></div>
|
|
1297
1368
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_af264312f0020bde9151697bccfde3263"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#af264312f0020bde9151697bccfde3263">SVF::SVFFunction::getReturnType</a></div><div class="ttdeci">const SVFType * getReturnType() const</div><div class="ttdoc">Returns the FunctionType.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00361">SVFValue.h:361</a></div></div>
|
|
1298
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a206973624fcc58e6044c884dba23a754"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">SVF::LLVMUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1369
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a206973624fcc58e6044c884dba23a754"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">SVF::LLVMUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01079">LLVMUtil.cpp:1079</a></div></div>
|
|
1299
1370
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00329">LLVMUtil.h:329</a></div></div>
|
|
1300
1371
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adfa4a4e6d13004d14137d9168bd32463"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">SVF::LLVMUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00241">LLVMUtil.h:241</a></div></div>
|
|
1301
1372
|
<div class="ttc" id="aLLVMUtil_8cpp_html_a61c158146c07e77234eb4a2f9b940821"><div class="ttname"><a href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a></div><div class="ttdeci">const std::string structName</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00044">LLVMUtil.cpp:44</a></div></div>
|
|
@@ -1303,7 +1374,7 @@ $(function() {
|
|
|
1303
1374
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a0095d23a9c9d5d62ec4a23c56824b5f0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">SVF::LLVMUtil::getLLVMCallSite</a></div><div class="ttdeci">const CallBase * getLLVMCallSite(const Value *value)</div><div class="ttdoc">Return LLVM callsite given a value.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00068">LLVMUtil.h:68</a></div></div>
|
|
1304
1375
|
<div class="ttc" id="aclassSVF_1_1SVFType_html_a05850c17c2dbe42e5602dc8c9a70f3bd"><div class="ttname"><a href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">SVF::SVFType::getTypeInfo</a></div><div class="ttdeci">StInfo * getTypeInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00307">SVFType.h:307</a></div></div>
|
|
1305
1376
|
<div class="ttc" id="anamespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
|
|
1306
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab1b4c565ae6be788b934defc21a5cfaf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">SVF::LLVMUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1377
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab1b4c565ae6be788b934defc21a5cfaf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">SVF::LLVMUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00930">LLVMUtil.cpp:930</a></div></div>
|
|
1307
1378
|
<div class="ttc" id="anamespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00052">SVFType.h:52</a></div></div>
|
|
1308
1379
|
<div class="ttc" id="anamespaceSVF_html_a89c7208bfc0b57873dfa574f52050295"><div class="ttname"><a href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">SVF::DISubprogram</a></div><div class="ttdeci">llvm::DISubprogram DISubprogram</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00111">BasicTypes.h:111</a></div></div>
|
|
1309
1380
|
<div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_af6117df8aec7f4c077058fa8f00b0243"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">SVF::cppUtil::DemangledName::isThunkFunc</a></div><div class="ttdeci">bool isThunkFunc</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00050">CppUtil.h:50</a></div></div>
|
|
@@ -1315,22 +1386,24 @@ $(function() {
|
|
|
1315
1386
|
<div class="ttc" id="anamespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
1316
1387
|
<div class="ttc" id="anamespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00123">BasicTypes.h:123</a></div></div>
|
|
1317
1388
|
<div class="ttc" id="aclassSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector< const SVFType * > & getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00192">SVFType.h:192</a></div></div>
|
|
1318
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa841a295ec803b6a1f2bd248f63f863f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">SVF::LLVMUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1389
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa841a295ec803b6a1f2bd248f63f863f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">SVF::LLVMUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01171">LLVMUtil.cpp:1171</a></div></div>
|
|
1319
1390
|
<div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_a5cd207bce618521166e6fa235014b297"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">SVF::cppUtil::DemangledName::className</a></div><div class="ttdeci">std::string className</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00048">CppUtil.h:48</a></div></div>
|
|
1320
1391
|
<div class="ttc" id="anamespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00273">BasicTypes.h:273</a></div></div>
|
|
1392
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_acee7c2fb08e111eda4d91ce5479de05e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">SVF::LLVMUtil::isUnusedGlobalVariable</a></div><div class="ttdeci">bool isUnusedGlobalVariable(const GlobalVariable &global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00566">LLVMUtil.cpp:566</a></div></div>
|
|
1321
1393
|
<div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_a1dd17b240663bc9412adefde82385e02"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">SVF::cppUtil::DemangledName::funcName</a></div><div class="ttdeci">std::string funcName</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00049">CppUtil.h:49</a></div></div>
|
|
1322
|
-
<div class="ttc" id="
|
|
1323
|
-
<div class="ttc" id="
|
|
1394
|
+
<div class="ttc" id="anamespaceSVF_html_afc1b50355821e7299df03b026e36f1df"><div class="ttname"><a href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">SVF::User</a></div><div class="ttdeci">llvm::User User</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00140">BasicTypes.h:140</a></div></div>
|
|
1395
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a47bbc0527ced570d576ccc2f9df409cb"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a47bbc0527ced570d576ccc2f9df409cb">SVF::LLVMUtil::isCPPThunkFunction</a></div><div class="ttdeci">bool isCPPThunkFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00961">LLVMUtil.cpp:961</a></div></div>
|
|
1396
|
+
<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#l01271">LLVMUtil.cpp:1271</a></div></div>
|
|
1324
1397
|
<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>
|
|
1325
1398
|
<div class="ttc" id="anamespaceSVF_html_a67f3f86344f028cacfbeb08caaf7bb0f"><div class="ttname"><a href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">SVF::GlobalValue</a></div><div class="ttdeci">llvm::GlobalValue GlobalValue</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00086">BasicTypes.h:86</a></div></div>
|
|
1326
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b32283ee2dbb9cef1d17ab6f2719e0c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">SVF::LLVMUtil::getSourceLocOfFunction</a></div><div class="ttdeci">const std::string getSourceLocOfFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1327
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aab1cb59036d181e20a477bf1eebd81ff"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aab1cb59036d181e20a477bf1eebd81ff">SVF::LLVMUtil::getThunkTarget</a></div><div class="ttdeci">const Function * getThunkTarget(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1399
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b32283ee2dbb9cef1d17ab6f2719e0c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">SVF::LLVMUtil::getSourceLocOfFunction</a></div><div class="ttdeci">const std::string getSourceLocOfFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00771">LLVMUtil.cpp:771</a></div></div>
|
|
1400
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aab1cb59036d181e20a477bf1eebd81ff"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aab1cb59036d181e20a477bf1eebd81ff">SVF::LLVMUtil::getThunkTarget</a></div><div class="ttdeci">const Function * getThunkTarget(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00967">LLVMUtil.cpp:967</a></div></div>
|
|
1328
1401
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae368713463c84425f9a1ad27ff401a47"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae368713463c84425f9a1ad27ff401a47">SVF::LLVMUtil::getTypeOfHeapAlloc</a></div><div class="ttdeci">const Type * getTypeOfHeapAlloc(const Instruction *inst)</div><div class="ttdoc">Get the type of the heap allocation.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00356">LLVMUtil.cpp:356</a></div></div>
|
|
1329
1402
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9bd6f54920929e5ad35102ba2f2223da"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">SVF::LLVMUtil::getFunReachableBBs</a></div><div class="ttdeci">void getFunReachableBBs(const Function *svfFun, std::vector< const SVFBasicBlock * > &bbs)</div><div class="ttdoc">Get reachable basic block from function entry.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00069">LLVMUtil.cpp:69</a></div></div>
|
|
1330
1403
|
<div class="ttc" id="anamespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00118">BasicTypes.h:118</a></div></div>
|
|
1331
1404
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2abbe4ed46b2031a981d93b3ba9d3fbd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2abbe4ed46b2031a981d93b3ba9d3fbd">SVF::LLVMUtil::viewCFGOnly</a></div><div class="ttdeci">void viewCFGOnly(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00240">LLVMUtil.cpp:240</a></div></div>
|
|
1332
1405
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector< const SVFInstruction * > &instList)</div><div class="ttdoc">Get the previous instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00304">LLVMUtil.cpp:304</a></div></div>
|
|
1333
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a45da980cb7c085942bb8e6010db9d84f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a45da980cb7c085942bb8e6010db9d84f">SVF::LLVMUtil::isLoadVtblInst</a></div><div class="ttdeci">bool isLoadVtblInst(const LoadInst *loadInst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1406
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a45da980cb7c085942bb8e6010db9d84f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a45da980cb7c085942bb8e6010db9d84f">SVF::LLVMUtil::isLoadVtblInst</a></div><div class="ttdeci">bool isLoadVtblInst(const LoadInst *loadInst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00899">LLVMUtil.cpp:899</a></div></div>
|
|
1334
1407
|
<div class="ttc" id="aSVFFileSystem_8cpp_html_ab25baccb41e3b67ef0bfdaa1336c9649"><div class="ttname"><a href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a></div><div class="ttdeci">#define F(f)</div></div>
|
|
1335
1408
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4638a12f5481dff947b59cf8353e619b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">SVF::LLVMUtil::isIntrinsicFun</a></div><div class="ttdeci">bool isIntrinsicFun(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00190">LLVMUtil.cpp:190</a></div></div>
|
|
1336
1409
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae617611b584e3d899984c376a6e91987"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">SVF::LLVMUtil::getBBPredecessorNum</a></div><div class="ttdeci">u32_t getBBPredecessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB's predecessors.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00387">LLVMUtil.cpp:387</a></div></div>
|
|
@@ -1343,16 +1416,16 @@ $(function() {
|
|
|
1343
1416
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a003b769751b93b94bdb011bd704cfde1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">SVF::LLVMUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00204">LLVMUtil.cpp:204</a></div></div>
|
|
1344
1417
|
<div class="ttc" id="aSymbolTableInfo_8h_html"><div class="ttname"><a href="SymbolTableInfo_8h.html">SymbolTableInfo.h</a></div></div>
|
|
1345
1418
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8cd4d6410017b9e5f47f2f88450b78d8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">SVF::LLVMUtil::getFunAnnotations</a></div><div class="ttdeci">std::vector< std::string > getFunAnnotations(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00444">LLVMUtil.cpp:444</a></div></div>
|
|
1346
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a09683d4d88a50fa621809c734465f94d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">SVF::LLVMUtil::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1419
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a09683d4d88a50fa621809c734465f94d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">SVF::LLVMUtil::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00644">LLVMUtil.cpp:644</a></div></div>
|
|
1347
1420
|
<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>
|
|
1348
1421
|
<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>
|
|
1349
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a718c8ec79f36cef5df2f4530541f2770"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">SVF::LLVMUtil::getVCallIdx</a></div><div class="ttdeci">s32_t getVCallIdx(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1350
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6dd1590b82d2bd86766886bd21bc2b72"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">SVF::LLVMUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1422
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a718c8ec79f36cef5df2f4530541f2770"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">SVF::LLVMUtil::getVCallIdx</a></div><div class="ttdeci">s32_t getVCallIdx(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01209">LLVMUtil.cpp:1209</a></div></div>
|
|
1423
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6dd1590b82d2bd86766886bd21bc2b72"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">SVF::LLVMUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01048">LLVMUtil.cpp:1048</a></div></div>
|
|
1351
1424
|
<div class="ttc" id="anamespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
|
|
1352
1425
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream & errs()</div><div class="ttdoc">Overwrite llvm::errs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00056">SVFUtil.h:56</a></div></div>
|
|
1353
1426
|
<div class="ttc" id="anamespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00143">BasicTypes.h:143</a></div></div>
|
|
1354
1427
|
<div class="ttc" id="anamespaceSVF_html_a255efa5be786996cbdd0c1f3d98b8400"><div class="ttname"><a href="namespaceSVF.html#a255efa5be786996cbdd0c1f3d98b8400">SVF::SuccBBAndCondValPair</a></div><div class="ttdeci">std::pair< const BasicBlock *, const ConstantInt * > SuccBBAndCondValPair</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00182">BasicTypes.h:182</a></div></div>
|
|
1355
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a416bcb6da0650f546cb7d83e6be850b6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">SVF::LLVMUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1428
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a416bcb6da0650f546cb7d83e6be850b6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">SVF::LLVMUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01147">LLVMUtil.cpp:1147</a></div></div>
|
|
1356
1429
|
<!-- start footer part -->
|
|
1357
1430
|
<hr class="footer"/><address class="footer"><small>
|
|
1358
1431
|
Generated by  <a href="http://www.doxygen.org/index.html">
|