svf-tools 1.0.901 → 1.0.902
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/AbstractExecution_8cpp_source.html +10 -10
- package/SVF-doxygen/html/AbstractExecution_8h_source.html +2 -2
- package/SVF-doxygen/html/Andersen_8h_source.html +1 -1
- package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/CSC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/ConsGNode_8h_source.html +4 -4
- package/SVF-doxygen/html/ConsG_8cpp_source.html +760 -757
- package/SVF-doxygen/html/ConsG_8h_source.html +19 -19
- package/SVF-doxygen/html/ContextDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/FlowDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/FlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/ICFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/MSSAMuChi_8h_source.html +2 -2
- package/SVF-doxygen/html/MemRegion_8cpp_source.html +2 -2
- package/SVF-doxygen/html/MemRegion_8h_source.html +2 -2
- package/SVF-doxygen/html/MemSSA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/MemSSA_8h_source.html +2 -2
- package/SVF-doxygen/html/PAGBuilderFromFile_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFFileSystem_8cpp_source.html +14 -14
- package/SVF-doxygen/html/SVFFileSystem_8h_source.html +14 -14
- package/SVF-doxygen/html/SVFGReadWrite_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +60 -60
- package/SVF-doxygen/html/SVFIR2ConsExeState_8h_source.html +9 -9
- package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +216 -206
- package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +14 -14
- package/SVF-doxygen/html/SVFIR2Relation_8cpp_source.html +35 -35
- package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +800 -804
- package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +59 -59
- package/SVF-doxygen/html/SVFIR_8cpp_source.html +20 -20
- package/SVF-doxygen/html/SVFIR_8h_source.html +197 -197
- package/SVF-doxygen/html/SVFStatements_8cpp_source.html +20 -20
- package/SVF-doxygen/html/SVFStatements_8h_source.html +1001 -953
- package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +7 -7
- package/SVF-doxygen/html/SaberCondAllocator_8h_source.html +2 -2
- package/SVF-doxygen/html/Steensgaard_8h_source.html +1 -1
- package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +485 -483
- package/SVF-doxygen/html/SymbolTableBuilder_8h_source.html +14 -14
- package/SVF-doxygen/html/VFGNode_8h_source.html +10 -10
- package/SVF-doxygen/html/VFG_8cpp_source.html +16 -16
- package/SVF-doxygen/html/VFG_8h_source.html +13 -13
- package/SVF-doxygen/html/ae_8cpp_source.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AbstractExecution.html +15 -15
- package/SVF-doxygen/html/classSVF_1_1AddrCGEdge.html +11 -11
- package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AndersenBase.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +68 -68
- package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +51 -51
- package/SVF-doxygen/html/classSVF_1_1BranchVFGNode.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1CSC.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1CallPE.html +35 -35
- package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +97 -97
- package/SVF-doxygen/html/classSVF_1_1ConstraintGraph.html +514 -511
- package/SVF-doxygen/html/classSVF_1_1ConstraintNode.html +28 -28
- package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1CopyStmt-members.html +8 -2
- package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +238 -35
- package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1GepStmt.html +56 -56
- package/SVF-doxygen/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +19 -19
- package/SVF-doxygen/html/classSVF_1_1MRGenerator.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1MemSSA.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1MultiOpndStmt.html +48 -48
- package/SVF-doxygen/html/classSVF_1_1PAGBuilderFromFile.html +15 -15
- package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +46 -46
- package/SVF-doxygen/html/classSVF_1_1RetPE.html +35 -35
- package/SVF-doxygen/html/classSVF_1_1SVFG.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFIR.html +137 -136
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +51 -51
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +197 -187
- package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +770 -775
- package/SVF-doxygen/html/classSVF_1_1SVFIRReader.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +38 -38
- package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +17 -17
- package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +466 -464
- package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +22 -22
- package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +21 -21
- package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +44 -44
- package/SVF-doxygen/html/classSVF_1_1VFG.html +16 -16
- package/SVF-doxygen/html/functions_func_i.html +28 -10
- package/SVF-doxygen/html/functions_i.html +30 -12
- package/SVF-doxygen/html/functions_l.html +3 -3
- package/SVF-doxygen/html/functions_p.html +15 -11
- package/SVF-doxygen/html/functions_r.html +1 -1
- package/SVF-doxygen/html/functions_s.html +7 -7
- package/SVF-doxygen/html/functions_t.html +3 -3
- package/SVF-doxygen/html/functions_v.html +6 -6
- package/SVF-doxygen/html/functions_w.html +7 -13
- package/SVF-doxygen/html/namespaceSVF.html +1 -1
- package/SVF-doxygen/html/search/all_10.js +326 -326
- package/SVF-doxygen/html/search/all_11.js +226 -226
- package/SVF-doxygen/html/search/all_12.js +574 -574
- package/SVF-doxygen/html/search/all_13.js +208 -208
- package/SVF-doxygen/html/search/all_14.js +73 -73
- package/SVF-doxygen/html/search/all_15.js +176 -176
- package/SVF-doxygen/html/search/all_16.js +77 -77
- package/SVF-doxygen/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/search/all_19.js +27 -27
- package/SVF-doxygen/html/search/all_1a.js +179 -179
- package/SVF-doxygen/html/search/all_9.js +308 -302
- package/SVF-doxygen/html/search/all_a.js +46 -46
- package/SVF-doxygen/html/search/all_b.js +26 -26
- package/SVF-doxygen/html/search/all_c.js +115 -115
- package/SVF-doxygen/html/search/all_d.js +204 -204
- package/SVF-doxygen/html/search/all_e.js +209 -209
- package/SVF-doxygen/html/search/all_f.js +122 -122
- package/SVF-doxygen/html/search/classes_0.js +28 -28
- package/SVF-doxygen/html/search/classes_1.js +11 -11
- package/SVF-doxygen/html/search/classes_10.js +74 -74
- package/SVF-doxygen/html/search/classes_11.js +14 -14
- package/SVF-doxygen/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/search/classes_14.js +19 -19
- package/SVF-doxygen/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/search/classes_2.js +73 -73
- package/SVF-doxygen/html/search/classes_3.js +35 -35
- package/SVF-doxygen/html/search/classes_4.js +8 -8
- package/SVF-doxygen/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/search/classes_6.js +98 -98
- package/SVF-doxygen/html/search/classes_7.js +38 -38
- package/SVF-doxygen/html/search/classes_8.js +59 -59
- package/SVF-doxygen/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/search/classes_d.js +19 -19
- package/SVF-doxygen/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/search/defines_1.js +3 -3
- package/SVF-doxygen/html/search/defines_10.js +2 -2
- package/SVF-doxygen/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/search/defines_3.js +20 -20
- package/SVF-doxygen/html/search/defines_4.js +3 -3
- package/SVF-doxygen/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/search/defines_c.js +4 -4
- package/SVF-doxygen/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/search/defines_e.js +8 -8
- package/SVF-doxygen/html/search/defines_f.js +4 -4
- package/SVF-doxygen/html/search/enums_0.js +4 -4
- package/SVF-doxygen/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/search/enums_2.js +9 -9
- package/SVF-doxygen/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/search/enums_4.js +4 -4
- package/SVF-doxygen/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/search/enumvalues_0.js +15 -15
- package/SVF-doxygen/html/search/enumvalues_1.js +16 -16
- package/SVF-doxygen/html/search/enumvalues_10.js +36 -36
- package/SVF-doxygen/html/search/enumvalues_11.js +5 -5
- package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_15.js +4 -4
- package/SVF-doxygen/html/search/enumvalues_2.js +37 -37
- package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/search/enumvalues_5.js +50 -50
- package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
- package/SVF-doxygen/html/search/enumvalues_8.js +24 -24
- package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_a.js +17 -17
- package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/search/enumvalues_d.js +19 -19
- package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_f.js +49 -49
- package/SVF-doxygen/html/search/files_0.js +16 -16
- package/SVF-doxygen/html/search/files_1.js +9 -9
- package/SVF-doxygen/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/search/files_2.js +53 -53
- package/SVF-doxygen/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/search/files_4.js +5 -5
- package/SVF-doxygen/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/search/files_6.js +10 -10
- package/SVF-doxygen/html/search/files_7.js +17 -17
- package/SVF-doxygen/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/search/files_b.js +4 -4
- package/SVF-doxygen/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/search/functions_0.js +13 -13
- package/SVF-doxygen/html/search/functions_1.js +368 -368
- package/SVF-doxygen/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/search/functions_11.js +140 -140
- package/SVF-doxygen/html/search/functions_12.js +299 -299
- package/SVF-doxygen/html/search/functions_13.js +73 -73
- package/SVF-doxygen/html/search/functions_14.js +41 -41
- package/SVF-doxygen/html/search/functions_15.js +72 -72
- package/SVF-doxygen/html/search/functions_16.js +38 -38
- package/SVF-doxygen/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/search/functions_18.js +179 -179
- package/SVF-doxygen/html/search/functions_2.js +94 -94
- package/SVF-doxygen/html/search/functions_3.js +261 -261
- package/SVF-doxygen/html/search/functions_4.js +85 -85
- package/SVF-doxygen/html/search/functions_5.js +57 -57
- package/SVF-doxygen/html/search/functions_6.js +65 -65
- package/SVF-doxygen/html/search/functions_7.js +872 -872
- package/SVF-doxygen/html/search/functions_8.js +162 -162
- package/SVF-doxygen/html/search/functions_9.js +446 -440
- package/SVF-doxygen/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/search/functions_c.js +25 -25
- package/SVF-doxygen/html/search/functions_d.js +82 -82
- package/SVF-doxygen/html/search/functions_e.js +36 -36
- package/SVF-doxygen/html/search/functions_f.js +58 -58
- package/SVF-doxygen/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/search/related_0.js +4 -4
- package/SVF-doxygen/html/search/related_1.js +2 -2
- package/SVF-doxygen/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/search/related_7.js +5 -5
- package/SVF-doxygen/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/search/related_c.js +2 -2
- package/SVF-doxygen/html/search/related_d.js +12 -12
- package/SVF-doxygen/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/search/typedefs_0.js +19 -19
- package/SVF-doxygen/html/search/typedefs_1.js +27 -27
- package/SVF-doxygen/html/search/typedefs_10.js +65 -65
- package/SVF-doxygen/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/search/typedefs_12.js +13 -13
- package/SVF-doxygen/html/search/typedefs_13.js +40 -40
- package/SVF-doxygen/html/search/typedefs_14.js +11 -11
- package/SVF-doxygen/html/search/typedefs_2.js +125 -125
- package/SVF-doxygen/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/search/typedefs_4.js +17 -17
- package/SVF-doxygen/html/search/typedefs_5.js +42 -42
- package/SVF-doxygen/html/search/typedefs_6.js +54 -54
- package/SVF-doxygen/html/search/typedefs_7.js +47 -47
- package/SVF-doxygen/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/search/typedefs_9.js +6 -6
- package/SVF-doxygen/html/search/typedefs_a.js +29 -29
- package/SVF-doxygen/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/search/typedefs_c.js +41 -41
- package/SVF-doxygen/html/search/typedefs_d.js +15 -15
- package/SVF-doxygen/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/search/variables_0.js +177 -177
- package/SVF-doxygen/html/search/variables_1.js +77 -77
- package/SVF-doxygen/html/search/variables_10.js +98 -98
- package/SVF-doxygen/html/search/variables_11.js +46 -46
- package/SVF-doxygen/html/search/variables_12.js +93 -93
- package/SVF-doxygen/html/search/variables_13.js +76 -76
- package/SVF-doxygen/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/search/variables_15.js +49 -49
- package/SVF-doxygen/html/search/variables_16.js +11 -11
- package/SVF-doxygen/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/search/variables_18.js +17 -17
- package/SVF-doxygen/html/search/variables_2.js +40 -40
- package/SVF-doxygen/html/search/variables_3.js +143 -143
- package/SVF-doxygen/html/search/variables_4.js +51 -51
- package/SVF-doxygen/html/search/variables_5.js +39 -39
- package/SVF-doxygen/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/search/variables_7.js +34 -34
- package/SVF-doxygen/html/search/variables_8.js +8 -8
- package/SVF-doxygen/html/search/variables_9.js +79 -79
- package/SVF-doxygen/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/search/variables_d.js +57 -57
- package/SVF-doxygen/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/search/variables_f.js +31 -31
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +120 -120
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/svf-ex_8cpp.html +14 -14
- package/SVF-doxygen/html/svf-ex_8cpp_source.html +14 -14
- package/package.json +1 -1
- package/svf/include/SVFIR/SVFIR.h +2 -1
- package/svf/include/SVFIR/SVFStatements.h +45 -3
- package/svf/lib/AE/Svfexe/SVFIR2ItvExeState.cpp +8 -0
- package/svf/lib/Graphs/ConsG.cpp +2 -1
- package/svf-llvm/lib/SVFIRBuilder.cpp +10 -14
- package/svf-llvm/lib/SymbolTableBuilder.cpp +2 -0
|
@@ -1960,21 +1960,21 @@ Private Attributes</h2></td></tr>
|
|
|
1960
1960
|
<p>Get a base <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> given a pointer Return the source node of its connected normal gep edge Otherwise return the node id itself s32_t offset : gep offset </p>
|
|
1961
1961
|
<p>if this node is already a base node</p>
|
|
1962
1962
|
|
|
1963
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
1964
|
-
<div class="fragment"><div class="line"><a name="
|
|
1965
|
-
<div class="line"><a name="
|
|
1966
|
-
<div class="line"><a name="
|
|
1967
|
-
<div class="line"><a name="
|
|
1968
|
-
<div class="line"><a name="
|
|
1969
|
-
<div class="line"><a name="
|
|
1970
|
-
<div class="line"><a name="
|
|
1971
|
-
<div class="line"><a name="
|
|
1972
|
-
<div class="line"><a name="
|
|
1973
|
-
<div class="line"><a name="
|
|
1974
|
-
<div class="line"><a name="
|
|
1975
|
-
<div class="line"><a name="
|
|
1976
|
-
<div class="line"><a name="
|
|
1977
|
-
<div class="line"><a name="
|
|
1963
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01294">1294</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
1964
|
+
<div class="fragment"><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> {</div>
|
|
1965
|
+
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nodeId);</div>
|
|
1966
|
+
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>& geps = node-><a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div>
|
|
1967
|
+
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  <span class="keywordflow">if</span>(geps.empty())</div>
|
|
1968
|
+
<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(0);</div>
|
|
1969
|
+
<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  </div>
|
|
1970
|
+
<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  assert(geps.size()==1 && <span class="stringliteral">"one node can only be connected by at most one gep edge!"</span>);</div>
|
|
1971
|
+
<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVFVar::iterator</a> it = geps.begin();</div>
|
|
1972
|
+
<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepEdge = SVFUtil::cast<GepStmt>(*it);</div>
|
|
1973
|
+
<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  <span class="keywordflow">if</span>(gepEdge-><a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div>
|
|
1974
|
+
<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(0);</div>
|
|
1975
|
+
<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  <span class="keywordflow">else</span></div>
|
|
1976
|
+
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="keywordflow">return</span> gepEdge-><a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>();</div>
|
|
1977
|
+
<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span> }</div>
|
|
1978
1978
|
</div><!-- fragment -->
|
|
1979
1979
|
</div>
|
|
1980
1980
|
</div>
|
|
@@ -2080,23 +2080,23 @@ Private Attributes</h2></td></tr>
|
|
|
2080
2080
|
|
|
2081
2081
|
<p>Get the base value of (i8* src and i8* dst) for external argument (e.g. memcpy(i8* dst, i8* src, int size)) </p>
|
|
2082
2082
|
|
|
2083
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
2084
|
-
<div class="fragment"><div class="line"><a name="
|
|
2085
|
-
<div class="line"><a name="
|
|
2086
|
-
<div class="line"><a name="
|
|
2087
|
-
<div class="line"><a name="
|
|
2088
|
-
<div class="line"><a name="
|
|
2089
|
-
<div class="line"><a name="
|
|
2090
|
-
<div class="line"><a name="
|
|
2091
|
-
<div class="line"><a name="
|
|
2092
|
-
<div class="line"><a name="
|
|
2093
|
-
<div class="line"><a name="
|
|
2094
|
-
<div class="line"><a name="
|
|
2095
|
-
<div class="line"><a name="
|
|
2096
|
-
<div class="line"><a name="
|
|
2097
|
-
<div class="line"><a name="
|
|
2098
|
-
<div class="line"><a name="
|
|
2099
|
-
<div class="line"><a name="
|
|
2083
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01067">1067</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
2084
|
+
<div class="fragment"><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> {</div>
|
|
2085
|
+
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">stripAllCasts</a>(V);</div>
|
|
2086
|
+
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  assert(value && <span class="stringliteral">"null ptr?"</span>);</div>
|
|
2087
|
+
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gep = SVFUtil::dyn_cast<GetElementPtrInst>(value))</div>
|
|
2088
|
+
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  {</div>
|
|
2089
|
+
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> totalidx = 0;</div>
|
|
2090
|
+
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1generic__bridge__gep__type__iterator.html">bridge_gep_iterator</a> gi = <a class="code" href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">bridge_gep_begin</a>(gep), ge = <a class="code" href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">bridge_gep_end</a>(gep); gi != ge; ++gi)</div>
|
|
2091
|
+
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  {</div>
|
|
2092
|
+
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* op = SVFUtil::dyn_cast<ConstantInt>(gi.getOperand()))</div>
|
|
2093
|
+
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  totalidx += op->getSExtValue();</div>
|
|
2094
|
+
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  }</div>
|
|
2095
|
+
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <span class="keywordflow">if</span>(totalidx == 0 && !SVFUtil::isa<StructType>(value->getType()))</div>
|
|
2096
|
+
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  value = gep->getPointerOperand();</div>
|
|
2097
|
+
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  }</div>
|
|
2098
|
+
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <span class="keywordflow">return</span> value;</div>
|
|
2099
|
+
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> }</div>
|
|
2100
2100
|
</div><!-- fragment -->
|
|
2101
2101
|
</div>
|
|
2102
2102
|
</div>
|
|
@@ -2263,39 +2263,39 @@ Private Attributes</h2></td></tr>
|
|
|
2263
2263
|
</div><div class="memdoc">
|
|
2264
2264
|
<p>Add a temp field value node according to base value and offset this node is after the initial node method, it is out of scope of symInfo table </p>
|
|
2265
2265
|
|
|
2266
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
2267
|
-
<div class="fragment"><div class="line"><a name="
|
|
2268
|
-
<div class="line"><a name="
|
|
2269
|
-
<div class="line"><a name="
|
|
2270
|
-
<div class="line"><a name="
|
|
2271
|
-
<div class="line"><a name="
|
|
2272
|
-
<div class="line"><a name="
|
|
2273
|
-
<div class="line"><a name="
|
|
2274
|
-
<div class="line"><a name="
|
|
2275
|
-
<div class="line"><a name="
|
|
2276
|
-
<div class="line"><a name="
|
|
2277
|
-
<div class="line"><a name="
|
|
2278
|
-
<div class="line"><a name="
|
|
2279
|
-
<div class="line"><a name="
|
|
2280
|
-
<div class="line"><a name="
|
|
2281
|
-
<div class="line"><a name="
|
|
2282
|
-
<div class="line"><a name="
|
|
2283
|
-
<div class="line"><a name="
|
|
2284
|
-
<div class="line"><a name="
|
|
2285
|
-
<div class="line"><a name="
|
|
2286
|
-
<div class="line"><a name="
|
|
2287
|
-
<div class="line"><a name="
|
|
2288
|
-
<div class="line"><a name="
|
|
2289
|
-
<div class="line"><a name="
|
|
2290
|
-
<div class="line"><a name="
|
|
2291
|
-
<div class="line"><a name="
|
|
2292
|
-
<div class="line"><a name="
|
|
2293
|
-
<div class="line"><a name="
|
|
2294
|
-
<div class="line"><a name="
|
|
2295
|
-
<div class="line"><a name="
|
|
2296
|
-
<div class="line"><a name="
|
|
2297
|
-
<div class="line"><a name="
|
|
2298
|
-
<div class="line"><a name="
|
|
2266
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01159">1159</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
2267
|
+
<div class="fragment"><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> {</div>
|
|
2268
|
+
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(val);</div>
|
|
2269
|
+
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#ad0977d55d947bdccd98d61c66d3f0cc7">getGepValVar</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, base, ap);</div>
|
|
2270
|
+
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  <span class="keywordflow">if</span> (gepval==UINT_MAX)</div>
|
|
2271
|
+
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  {</div>
|
|
2272
|
+
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  assert(((<span class="keywordtype">int</span>) UINT_MAX)==-1 && <span class="stringliteral">"maximum limit of unsigned int is not -1?"</span>);</div>
|
|
2273
|
+
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  <span class="comment">/*</span></div>
|
|
2274
|
+
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> <span class="comment"> * getGepValVar can only be called from two places:</span></div>
|
|
2275
|
+
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> <span class="comment"> * 1. SVFIRBuilder::addComplexConsForExt to handle external calls</span></div>
|
|
2276
|
+
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> <span class="comment"> * 2. SVFIRBuilder::getGlobalVarField to initialize global variable</span></div>
|
|
2277
|
+
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> <span class="comment"> * so curVal can only be</span></div>
|
|
2278
|
+
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> <span class="comment"> * 1. Instruction</span></div>
|
|
2279
|
+
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> <span class="comment"> * 2. GlobalVariable</span></div>
|
|
2280
|
+
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> <span class="comment"> */</span></div>
|
|
2281
|
+
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  assert((SVFUtil::isa<SVFInstruction, SVFGlobalValue>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>)) && <span class="stringliteral">"curVal not an instruction or a globalvariable?"</span>);</div>
|
|
2282
|
+
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  </div>
|
|
2283
|
+
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <span class="comment">// We assume every GepValNode and its GepEdge to the baseNode are unique across the whole program</span></div>
|
|
2284
|
+
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  <span class="comment">// We preserve the current BB information to restore it after creating the gepNode</span></div>
|
|
2285
|
+
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
|
|
2286
|
+
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
|
|
2287
|
+
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, <span class="keyword">nullptr</span>);</div>
|
|
2288
|
+
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* llvmmodule = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>();</div>
|
|
2289
|
+
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a555e6d530c37b23e1e43925aa188385f">addGepValNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, llvmmodule-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(val), ap,</div>
|
|
2290
|
+
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-><a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>(),</div>
|
|
2291
|
+
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  llvmmodule-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(PointerType::getUnqual(llvmmodule-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>())));</div>
|
|
2292
|
+
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4e1b6797df3e7b98da876f50741e6a3a">addGepEdge</a>(base, gepNode, ap, <span class="keyword">true</span>);</div>
|
|
2293
|
+
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
|
|
2294
|
+
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <span class="keywordflow">return</span> gepNode;</div>
|
|
2295
|
+
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  }</div>
|
|
2296
|
+
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  <span class="keywordflow">else</span></div>
|
|
2297
|
+
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  <span class="keywordflow">return</span> gepval;</div>
|
|
2298
|
+
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> }</div>
|
|
2299
2299
|
</div><!-- fragment -->
|
|
2300
2300
|
</div>
|
|
2301
2301
|
</div>
|
|
@@ -2341,19 +2341,19 @@ Private Attributes</h2></td></tr>
|
|
|
2341
2341
|
<p>Get the field of the global variable node FIXME:Here we only get the field that actually used in the program We ignore the initialization of global variable field that not used in the program </p>
|
|
2342
2342
|
<p>if we did not find the constant expression in the program, then we need to create a gep node for this field</p>
|
|
2343
2343
|
|
|
2344
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
2345
|
-
<div class="fragment"><div class="line"><a name="
|
|
2346
|
-
<div class="line"><a name="
|
|
2347
|
-
<div class="line"><a name="
|
|
2348
|
-
<div class="line"><a name="
|
|
2349
|
-
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  {</div>
|
|
2350
|
-
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(gvar);</div>
|
|
2351
|
-
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div>
|
|
2352
|
-
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">else</span></div>
|
|
2344
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00475">475</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
2345
|
+
<div class="fragment"><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> {</div>
|
|
2346
|
+
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  </div>
|
|
2347
|
+
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="comment">// if the global variable do not have any field needs to be initialized</span></div>
|
|
2348
|
+
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> == 0 && gvar->getInitializer()->getType()->isSingleValueType())</div>
|
|
2353
2349
|
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  {</div>
|
|
2354
|
-
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIRBuilder.html#
|
|
2350
|
+
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(gvar);</div>
|
|
2355
2351
|
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  }</div>
|
|
2356
|
-
<div class="line"><a name="
|
|
2352
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="keywordflow">else</span></div>
|
|
2353
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  {</div>
|
|
2354
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae4516ec05eabece1bc8e0cad1ec8cf1c">getGepValVar</a>(gvar, <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>(<a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>), tpy);</div>
|
|
2355
|
+
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  }</div>
|
|
2356
|
+
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span> }</div>
|
|
2357
2357
|
</div><!-- fragment -->
|
|
2358
2358
|
</div>
|
|
2359
2359
|
</div>
|
|
@@ -2565,69 +2565,69 @@ Private Attributes</h2></td></tr>
|
|
|
2565
2565
|
<p>Add the constraints for a direct, non-external call. </p>
|
|
2566
2566
|
<p>FIXME: this assertion should be placed for correct checking except bug program like 188.ammp, 300.twolf</p>
|
|
2567
2567
|
|
|
2568
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
2569
|
-
<div class="fragment"><div class="line"><a name="
|
|
2570
|
-
<div class="line"><a name="
|
|
2571
|
-
<div class="line"><a name="
|
|
2572
|
-
<div class="line"><a name="
|
|
2573
|
-
<div class="line"><a name="
|
|
2574
|
-
<div class="line"><a name="
|
|
2575
|
-
<div class="line"><a name="
|
|
2576
|
-
<div class="line"><a name="
|
|
2577
|
-
<div class="line"><a name="
|
|
2578
|
-
<div class="line"><a name="
|
|
2579
|
-
<div class="line"><a name="
|
|
2580
|
-
<div class="line"><a name="
|
|
2581
|
-
<div class="line"><a name="
|
|
2582
|
-
<div class="line"><a name="
|
|
2583
|
-
<div class="line"><a name="
|
|
2584
|
-
<div class="line"><a name="
|
|
2585
|
-
<div class="line"><a name="
|
|
2586
|
-
<div class="line"><a name="
|
|
2587
|
-
<div class="line"><a name="
|
|
2588
|
-
<div class="line"><a name="
|
|
2589
|
-
<div class="line"><a name="
|
|
2590
|
-
<div class="line"><a name="
|
|
2591
|
-
<div class="line"><a name="
|
|
2592
|
-
<div class="line"><a name="
|
|
2593
|
-
<div class="line"><a name="
|
|
2594
|
-
<div class="line"><a name="
|
|
2595
|
-
<div class="line"><a name="
|
|
2596
|
-
<div class="line"><a name="
|
|
2597
|
-
<div class="line"><a name="
|
|
2598
|
-
<div class="line"><a name="
|
|
2599
|
-
<div class="line"><a name="
|
|
2600
|
-
<div class="line"><a name="
|
|
2601
|
-
<div class="line"><a name="
|
|
2602
|
-
<div class="line"><a name="
|
|
2603
|
-
<div class="line"><a name="
|
|
2604
|
-
<div class="line"><a name="
|
|
2605
|
-
<div class="line"><a name="
|
|
2606
|
-
<div class="line"><a name="
|
|
2607
|
-
<div class="line"><a name="
|
|
2608
|
-
<div class="line"><a name="
|
|
2609
|
-
<div class="line"><a name="
|
|
2610
|
-
<div class="line"><a name="
|
|
2611
|
-
<div class="line"><a name="
|
|
2612
|
-
<div class="line"><a name="
|
|
2613
|
-
<div class="line"><a name="
|
|
2614
|
-
<div class="line"><a name="
|
|
2615
|
-
<div class="line"><a name="
|
|
2616
|
-
<div class="line"><a name="
|
|
2617
|
-
<div class="line"><a name="
|
|
2618
|
-
<div class="line"><a name="
|
|
2619
|
-
<div class="line"><a name="
|
|
2620
|
-
<div class="line"><a name="
|
|
2621
|
-
<div class="line"><a name="
|
|
2622
|
-
<div class="line"><a name="
|
|
2623
|
-
<div class="line"><a name="
|
|
2624
|
-
<div class="line"><a name="
|
|
2625
|
-
<div class="line"><a name="
|
|
2626
|
-
<div class="line"><a name="
|
|
2627
|
-
<div class="line"><a name="
|
|
2628
|
-
<div class="line"><a name="
|
|
2629
|
-
<div class="line"><a name="
|
|
2630
|
-
<div class="line"><a name="
|
|
2568
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01001">1001</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
2569
|
+
<div class="fragment"><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> {</div>
|
|
2570
|
+
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  </div>
|
|
2571
|
+
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
|
|
2572
|
+
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(cs);</div>
|
|
2573
|
+
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
|
|
2574
|
+
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div>
|
|
2575
|
+
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"handle direct call "</span> << svfcall-><a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">toString</a>() << <span class="stringliteral">" callee "</span> << <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getName().str() << <span class="stringliteral">"\n"</span>);</div>
|
|
2576
|
+
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  </div>
|
|
2577
|
+
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="comment">//Only handle the ret.val. if it's used as a ptr.</span></div>
|
|
2578
|
+
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstrec = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs);</div>
|
|
2579
|
+
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="comment">//Does it actually return a ptr?</span></div>
|
|
2580
|
+
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="keywordflow">if</span> (!cs->getType()->isVoidTy())</div>
|
|
2581
|
+
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  {</div>
|
|
2582
|
+
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcret = <a class="code" href="classSVF_1_1SVFIRBuilder.html#aff99c8de4acf4eeaf01803dadf459b92">getReturnNode</a>(svffun);</div>
|
|
2583
|
+
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callICFGNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
|
|
2584
|
+
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* exitICFGNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(svffun);</div>
|
|
2585
|
+
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a89e8cc23aad23d2c326b4a5ff12535ca">addRetEdge</a>(srcret, dstrec,callICFGNode, exitICFGNode);</div>
|
|
2586
|
+
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  }</div>
|
|
2587
|
+
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <span class="comment">//Iterators for the actual and formal parameters</span></div>
|
|
2588
|
+
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> itA = 0, ieA = cs->arg_size();</div>
|
|
2589
|
+
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  Function::const_arg_iterator itF = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->arg_begin(), ieF = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->arg_end();</div>
|
|
2590
|
+
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <span class="comment">//Go through the fixed parameters.</span></div>
|
|
2591
|
+
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" args:"</span>);</div>
|
|
2592
|
+
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  <span class="keywordflow">for</span> (; itF != ieF; ++itA, ++itF)</div>
|
|
2593
|
+
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  {</div>
|
|
2594
|
+
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <span class="comment">//Some programs (e.g. Linux kernel) leave unneeded parameters empty.</span></div>
|
|
2595
|
+
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  <span class="keywordflow">if</span> (itA == ieA)</div>
|
|
2596
|
+
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  {</div>
|
|
2597
|
+
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" !! not enough args\n"</span>);</div>
|
|
2598
|
+
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keywordflow">break</span>;</div>
|
|
2599
|
+
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  }</div>
|
|
2600
|
+
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* AA = cs->getArgOperand(itA), *FA = &*itF; <span class="comment">//current actual/formal arg</span></div>
|
|
2601
|
+
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  </div>
|
|
2602
|
+
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process actual parm "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(AA)->toString() << <span class="stringliteral">" \n"</span>);</div>
|
|
2603
|
+
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  </div>
|
|
2604
|
+
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstFA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(FA);</div>
|
|
2605
|
+
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcAA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(AA);</div>
|
|
2606
|
+
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
|
|
2607
|
+
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(svffun);</div>
|
|
2608
|
+
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#abaf03c3031ef3940c73e3cd8e8ca17b6">addCallEdge</a>(srcAA, dstFA, icfgNode, entry);</div>
|
|
2609
|
+
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  }</div>
|
|
2610
|
+
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <span class="comment">//Any remaining actual args must be varargs.</span></div>
|
|
2611
|
+
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->isVarArg())</div>
|
|
2612
|
+
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  {</div>
|
|
2613
|
+
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vaF = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3fe99644b2bf5f0f9b2b21a56a400ad4">getVarargNode</a>(svffun);</div>
|
|
2614
|
+
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\n varargs:"</span>);</div>
|
|
2615
|
+
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  <span class="keywordflow">for</span> (; itA != ieA; ++itA)</div>
|
|
2616
|
+
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  {</div>
|
|
2617
|
+
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* AA = cs->getArgOperand(itA);</div>
|
|
2618
|
+
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnAA = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(AA);</div>
|
|
2619
|
+
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
|
|
2620
|
+
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entry = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(svffun);</div>
|
|
2621
|
+
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#abaf03c3031ef3940c73e3cd8e8ca17b6">addCallEdge</a>(vnAA,vaF, icfgNode,entry);</div>
|
|
2622
|
+
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  }</div>
|
|
2623
|
+
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  }</div>
|
|
2624
|
+
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keywordflow">if</span>(itA != ieA)</div>
|
|
2625
|
+
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  {</div>
|
|
2626
|
+
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">"too many args to non-vararg func."</span>);</div>
|
|
2627
|
+
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">"("</span> + svfcall-><a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>() + <span class="stringliteral">")"</span>);</div>
|
|
2628
|
+
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  </div>
|
|
2629
|
+
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  }</div>
|
|
2630
|
+
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> }</div>
|
|
2631
2631
|
</div><!-- fragment -->
|
|
2632
2632
|
</div>
|
|
2633
2633
|
</div>
|
|
@@ -2879,14 +2879,14 @@ Private Attributes</h2></td></tr>
|
|
|
2879
2879
|
<p>Handle indirect call. </p>
|
|
2880
2880
|
<p>Indirect call is resolved on-the-fly during pointer analysis </p>
|
|
2881
2881
|
|
|
2882
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
2883
|
-
<div class="fragment"><div class="line"><a name="
|
|
2884
|
-
<div class="line"><a name="
|
|
2885
|
-
<div class="line"><a name="
|
|
2886
|
-
<div class="line"><a name="
|
|
2887
|
-
<div class="line"><a name="
|
|
2888
|
-
<div class="line"><a name="
|
|
2889
|
-
<div class="line"><a name="
|
|
2882
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01088">1088</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
2883
|
+
<div class="fragment"><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> {</div>
|
|
2884
|
+
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(cs);</div>
|
|
2885
|
+
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfcalledval = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(cs->getCalledOperand());</div>
|
|
2886
|
+
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  </div>
|
|
2887
|
+
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
|
|
2888
|
+
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#af4a5fd9ecddb1447207335917adccd68">addIndirectCallsites</a>(cbn,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(svfcalledval));</div>
|
|
2889
|
+
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> }</div>
|
|
2890
2890
|
</div><!-- fragment -->
|
|
2891
2891
|
</div>
|
|
2892
2892
|
</div>
|
|
@@ -2986,78 +2986,78 @@ Private Attributes</h2></td></tr>
|
|
|
2986
2986
|
</div><div class="memdoc">
|
|
2987
2987
|
<p>src should not point to anything yet</p>
|
|
2988
2988
|
|
|
2989
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
2990
|
-
<div class="fragment"><div class="line"><a name="
|
|
2991
|
-
<div class="line"><a name="
|
|
2992
|
-
<div class="line"><a name="
|
|
2993
|
-
<div class="line"><a name="
|
|
2994
|
-
<div class="line"><a name="
|
|
2995
|
-
<div class="line"><a name="
|
|
2996
|
-
<div class="line"><a name="
|
|
2997
|
-
<div class="line"><a name="
|
|
2998
|
-
<div class="line"><a name="
|
|
2999
|
-
<div class="line"><a name="
|
|
3000
|
-
<div class="line"><a name="
|
|
3001
|
-
<div class="line"><a name="
|
|
3002
|
-
<div class="line"><a name="
|
|
3003
|
-
<div class="line"><a name="
|
|
3004
|
-
<div class="line"><a name="
|
|
3005
|
-
<div class="line"><a name="
|
|
3006
|
-
<div class="line"><a name="
|
|
3007
|
-
<div class="line"><a name="
|
|
3008
|
-
<div class="line"><a name="
|
|
3009
|
-
<div class="line"><a name="
|
|
3010
|
-
<div class="line"><a name="
|
|
3011
|
-
<div class="line"><a name="
|
|
3012
|
-
<div class="line"><a name="
|
|
3013
|
-
<div class="line"><a name="
|
|
3014
|
-
<div class="line"><a name="
|
|
3015
|
-
<div class="line"><a name="
|
|
3016
|
-
<div class="line"><a name="
|
|
3017
|
-
<div class="line"><a name="
|
|
3018
|
-
<div class="line"><a name="
|
|
3019
|
-
<div class="line"><a name="
|
|
3020
|
-
<div class="line"><a name="
|
|
3021
|
-
<div class="line"><a name="
|
|
3022
|
-
<div class="line"><a name="
|
|
3023
|
-
<div class="line"><a name="
|
|
3024
|
-
<div class="line"><a name="
|
|
3025
|
-
<div class="line"><a name="
|
|
3026
|
-
<div class="line"><a name="
|
|
3027
|
-
<div class="line"><a name="
|
|
3028
|
-
<div class="line"><a name="
|
|
3029
|
-
<div class="line"><a name="
|
|
3030
|
-
<div class="line"><a name="
|
|
3031
|
-
<div class="line"><a name="
|
|
3032
|
-
<div class="line"><a name="
|
|
3033
|
-
<div class="line"><a name="
|
|
3034
|
-
<div class="line"><a name="
|
|
3035
|
-
<div class="line"><a name="
|
|
3036
|
-
<div class="line"><a name="
|
|
3037
|
-
<div class="line"><a name="
|
|
3038
|
-
<div class="line"><a name="
|
|
3039
|
-
<div class="line"><a name="
|
|
3040
|
-
<div class="line"><a name="
|
|
3041
|
-
<div class="line"><a name="
|
|
3042
|
-
<div class="line"><a name="
|
|
3043
|
-
<div class="line"><a name="
|
|
3044
|
-
<div class="line"><a name="
|
|
3045
|
-
<div class="line"><a name="
|
|
3046
|
-
<div class="line"><a name="
|
|
3047
|
-
<div class="line"><a name="
|
|
3048
|
-
<div class="line"><a name="
|
|
3049
|
-
<div class="line"><a name="
|
|
3050
|
-
<div class="line"><a name="
|
|
3051
|
-
<div class="line"><a name="
|
|
3052
|
-
<div class="line"><a name="
|
|
3053
|
-
<div class="line"><a name="
|
|
3054
|
-
<div class="line"><a name="
|
|
3055
|
-
<div class="line"><a name="
|
|
3056
|
-
<div class="line"><a name="
|
|
3057
|
-
<div class="line"><a name="
|
|
3058
|
-
<div class="line"><a name="
|
|
3059
|
-
<div class="line"><a name="
|
|
3060
|
-
<div class="line"><a name="
|
|
2989
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00502">502</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
2990
|
+
<div class="fragment"><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> {</div>
|
|
2991
|
+
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"global "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(gvar)->toString() << <span class="stringliteral">" constant initializer: "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(C)->toString() << <span class="stringliteral">"\n"</span>);</div>
|
|
2992
|
+
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">if</span> (C->getType()->isSingleValueType())</div>
|
|
2993
|
+
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  {</div>
|
|
2994
|
+
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(C);</div>
|
|
2995
|
+
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="comment">// get the field value if it is available, otherwise we create a dummy field node.</span></div>
|
|
2996
|
+
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(gvar, <span class="keyword">nullptr</span>);</div>
|
|
2997
|
+
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> field = <a class="code" href="classSVF_1_1SVFIRBuilder.html#af4e2ec8dee9fca167e20b01cc10b56fd">getGlobalVarField</a>(gvar, <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>, <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFType(C->getType()));</div>
|
|
2998
|
+
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  </div>
|
|
2999
|
+
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalVariable, Function>(C))</div>
|
|
3000
|
+
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  {</div>
|
|
3001
|
+
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div>
|
|
3002
|
+
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div>
|
|
3003
|
+
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  }</div>
|
|
3004
|
+
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantExpr>(C))</div>
|
|
3005
|
+
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  {</div>
|
|
3006
|
+
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="comment">// add gep edge of C1 itself is a constant expression</span></div>
|
|
3007
|
+
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(C);</div>
|
|
3008
|
+
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div>
|
|
3009
|
+
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div>
|
|
3010
|
+
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  }</div>
|
|
3011
|
+
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<BlockAddress>(C))</div>
|
|
3012
|
+
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  {</div>
|
|
3013
|
+
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="comment">// blockaddress instruction (e.g. i8* blockaddress(@run_vm, %182))</span></div>
|
|
3014
|
+
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="comment">// is treated as constant data object for now, see LLVMUtil.h:397, SymbolTableInfo.cpp:674 and SVFIRBuilder.cpp:183-194</span></div>
|
|
3015
|
+
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(C);</div>
|
|
3016
|
+
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div>
|
|
3017
|
+
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">getConstantNode</a>(), src);</div>
|
|
3018
|
+
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  }</div>
|
|
3019
|
+
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordflow">else</span></div>
|
|
3020
|
+
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  {</div>
|
|
3021
|
+
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(C, <span class="keyword">nullptr</span>);</div>
|
|
3022
|
+
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, field);</div>
|
|
3023
|
+
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">if</span> (C->getType()->isPtrOrPtrVectorTy() && src != <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>())</div>
|
|
3024
|
+
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a29d377d01267c364ce1badd4c0f2e98f">addCopyEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>(), src, <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a3fbb25d7761cca1dd44e06e41e5570c9">CopyStmt::COPYVAL</a>);</div>
|
|
3025
|
+
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  }</div>
|
|
3026
|
+
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  }</div>
|
|
3027
|
+
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantArray, ConstantStruct>(C))</div>
|
|
3028
|
+
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  {</div>
|
|
3029
|
+
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">cppUtil::isValVtbl</a>(gvar) && !<a class="code" href="classSVF_1_1Options.html#a88bb706e03a3dd04546b4ce62af7b140">Options::VtableInSVFIR</a>())</div>
|
|
3030
|
+
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordflow">return</span>;</div>
|
|
3031
|
+
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0, e = C->getNumOperands(); i != e; i++)</div>
|
|
3032
|
+
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  {</div>
|
|
3033
|
+
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> off = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a9f7c24325d897b598d6b989fdc4aae1e">getSymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFType(C->getType()), i);</div>
|
|
3034
|
+
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">InitialGlobal</a>(gvar, SVFUtil::cast<Constant>(C->getOperand(i)), <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> + off);</div>
|
|
3035
|
+
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  }</div>
|
|
3036
|
+
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  }</div>
|
|
3037
|
+
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* data = SVFUtil::dyn_cast<ConstantData>(C))</div>
|
|
3038
|
+
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  {</div>
|
|
3039
|
+
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a18dd95e01a50aa82165c46a3801053c5">Options::ModelConsts</a>())</div>
|
|
3040
|
+
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  {</div>
|
|
3041
|
+
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a>* seq = SVFUtil::dyn_cast<ConstantDataSequential>(data))</div>
|
|
3042
|
+
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  {</div>
|
|
3043
|
+
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordflow">for</span>(<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i < seq->getNumElements(); i++)</div>
|
|
3044
|
+
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  {</div>
|
|
3045
|
+
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> off = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a9f7c24325d897b598d6b989fdc4aae1e">getSymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFType(C->getType()), i);</div>
|
|
3046
|
+
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ct = seq->getElementAsConstant(i);</div>
|
|
3047
|
+
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">InitialGlobal</a>(gvar, ct, <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> + off);</div>
|
|
3048
|
+
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  }</div>
|
|
3049
|
+
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  }</div>
|
|
3050
|
+
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keywordflow">else</span></div>
|
|
3051
|
+
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  {</div>
|
|
3052
|
+
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  assert((SVFUtil::isa<ConstantAggregateZero, UndefValue>(data)) && <span class="stringliteral">"Single value type data should have been handled!"</span>);</div>
|
|
3053
|
+
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  }</div>
|
|
3054
|
+
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  }</div>
|
|
3055
|
+
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  }</div>
|
|
3056
|
+
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">else</span></div>
|
|
3057
|
+
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  {</div>
|
|
3058
|
+
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="comment">//TODO:assert(SVFUtil::isa<ConstantVector>(C),"what else do we have");</span></div>
|
|
3059
|
+
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  }</div>
|
|
3060
|
+
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span> }</div>
|
|
3061
3061
|
</div><!-- fragment -->
|
|
3062
3062
|
</div>
|
|
3063
3063
|
</div>
|
|
@@ -3232,70 +3232,76 @@ Private Attributes</h2></td></tr>
|
|
|
3232
3232
|
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="comment">// if we meet a int2ptr, then it points-to black hole</span></div>
|
|
3233
3233
|
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* int2Ptrce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">isInt2PtrConstantExpr</a>(ref))</div>
|
|
3234
3234
|
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  {</div>
|
|
3235
|
-
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <
|
|
3236
|
-
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> 
|
|
3237
|
-
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span> 
|
|
3238
|
-
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span> 
|
|
3239
|
-
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <
|
|
3240
|
-
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#
|
|
3241
|
-
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <
|
|
3242
|
-
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span> 
|
|
3243
|
-
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> 
|
|
3244
|
-
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> 
|
|
3245
|
-
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <a class="code" href="
|
|
3246
|
-
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> 
|
|
3247
|
-
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span> 
|
|
3248
|
-
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span> 
|
|
3249
|
-
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <
|
|
3250
|
-
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <
|
|
3251
|
-
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <
|
|
3252
|
-
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span> 
|
|
3253
|
-
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span> 
|
|
3254
|
-
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span> 
|
|
3255
|
-
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <
|
|
3256
|
-
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> 
|
|
3257
|
-
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> 
|
|
3258
|
-
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span> 
|
|
3259
|
-
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <
|
|
3260
|
-
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <
|
|
3261
|
-
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <
|
|
3262
|
-
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span> 
|
|
3263
|
-
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> 
|
|
3264
|
-
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> 
|
|
3265
|
-
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <
|
|
3266
|
-
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span> 
|
|
3267
|
-
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span> 
|
|
3268
|
-
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span> 
|
|
3269
|
-
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <
|
|
3270
|
-
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <
|
|
3271
|
-
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <
|
|
3272
|
-
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> 
|
|
3273
|
-
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> 
|
|
3274
|
-
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span> 
|
|
3275
|
-
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <
|
|
3276
|
-
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span> 
|
|
3277
|
-
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span> 
|
|
3278
|
-
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span> 
|
|
3279
|
-
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <
|
|
3280
|
-
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span> 
|
|
3281
|
-
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> 
|
|
3282
|
-
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span> 
|
|
3283
|
-
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span> 
|
|
3284
|
-
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span> 
|
|
3285
|
-
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="
|
|
3286
|
-
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span> 
|
|
3287
|
-
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span> 
|
|
3288
|
-
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span> 
|
|
3289
|
-
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <
|
|
3290
|
-
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <
|
|
3291
|
-
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span> 
|
|
3292
|
-
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span> 
|
|
3293
|
-
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span> 
|
|
3294
|
-
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <
|
|
3295
|
-
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span> 
|
|
3296
|
-
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span> 
|
|
3297
|
-
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span> 
|
|
3298
|
-
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span> 
|
|
3235
|
+
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = int2Ptrce->getOperand(0);</div>
|
|
3236
|
+
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(opnd);</div>
|
|
3237
|
+
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
|
|
3238
|
+
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
|
|
3239
|
+
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(int2Ptrce, <span class="keyword">nullptr</span>);</div>
|
|
3240
|
+
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a29d377d01267c364ce1badd4c0f2e98f">addCopyEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(opnd)), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(int2Ptrce)), <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a32b1e88bbb7433ed8071e9dd9daa2c83">CopyStmt::INTTOPTR</a>);</div>
|
|
3241
|
+
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
|
|
3242
|
+
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  }</div>
|
|
3243
|
+
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ptr2Intce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2834d135a2385efff783e6e22d2eff1f">isPtr2IntConstantExpr</a>(ref))</div>
|
|
3244
|
+
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  {</div>
|
|
3245
|
+
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = ptr2Intce->getOperand(0);</div>
|
|
3246
|
+
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(opnd);</div>
|
|
3247
|
+
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
|
|
3248
|
+
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
|
|
3249
|
+
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ptr2Intce, <span class="keyword">nullptr</span>);</div>
|
|
3250
|
+
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a29d377d01267c364ce1badd4c0f2e98f">addCopyEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(opnd)), <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(ptr2Intce)), <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ae746463dbec33f7d026b1a43e9ea4b87">CopyStmt::PTRTOINT</a>);</div>
|
|
3251
|
+
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
|
|
3252
|
+
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  }</div>
|
|
3253
|
+
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a946a2b51b848c45c6c52f03581ee05b8">isTruncConstantExpr</a>(ref) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa0b3e34188f721ff7145e47cb607c79a">isCmpConstantExpr</a>(ref))</div>
|
|
3254
|
+
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  {</div>
|
|
3255
|
+
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">// we don't handle trunc and cmp instruction for now</span></div>
|
|
3256
|
+
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
|
|
3257
|
+
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
|
|
3258
|
+
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div>
|
|
3259
|
+
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(ref));</div>
|
|
3260
|
+
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
|
|
3261
|
+
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
|
|
3262
|
+
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  }</div>
|
|
3263
|
+
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a35b36394af726c679fe2c1b6051db7c4">isBinaryConstantExpr</a>(ref))</div>
|
|
3264
|
+
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  {</div>
|
|
3265
|
+
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="comment">// we don't handle binary constant expression like add(x,y) now</span></div>
|
|
3266
|
+
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
|
|
3267
|
+
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
|
|
3268
|
+
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div>
|
|
3269
|
+
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(ref));</div>
|
|
3270
|
+
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
|
|
3271
|
+
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
|
|
3272
|
+
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  }</div>
|
|
3273
|
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a215cc9fd716798bbb7f96f5b64e01349">isUnaryConstantExpr</a>(ref))</div>
|
|
3274
|
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  {</div>
|
|
3275
|
+
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="comment">// we don't handle unary constant expression like fneg(x) now</span></div>
|
|
3276
|
+
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
|
|
3277
|
+
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
|
|
3278
|
+
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div>
|
|
3279
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(ref));</div>
|
|
3280
|
+
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
|
|
3281
|
+
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
|
|
3282
|
+
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div>
|
|
3283
|
+
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantAggregate>(ref))</div>
|
|
3284
|
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  {</div>
|
|
3285
|
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">// we don't handle constant aggregate like constant vectors</span></div>
|
|
3286
|
+
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div>
|
|
3287
|
+
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<BlockAddress>(ref))</div>
|
|
3288
|
+
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  {</div>
|
|
3289
|
+
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="comment">// blockaddress instruction (e.g. i8* blockaddress(@run_vm, %182))</span></div>
|
|
3290
|
+
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="comment">// is treated as constant data object for now, see LLVMUtil.h:397, SymbolTableInfo.cpp:674 and SVFIRBuilder.cpp:183-194</span></div>
|
|
3291
|
+
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* cval = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a95fd13343636bcbc18db1ef8d630c52e">getCurrentValue</a>();</div>
|
|
3292
|
+
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* cbb = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">getCurrentBB</a>();</div>
|
|
3293
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(ref, <span class="keyword">nullptr</span>);</div>
|
|
3294
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(ref));</div>
|
|
3295
|
+
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">getConstantNode</a>(), dst);</div>
|
|
3296
|
+
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(cval, cbb);</div>
|
|
3297
|
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  }</div>
|
|
3298
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">else</span></div>
|
|
3299
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  {</div>
|
|
3300
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">if</span>(SVFUtil::isa<ConstantExpr>(val))</div>
|
|
3301
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"we don't handle all other constant expression for now!"</span>);</div>
|
|
3302
|
+
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div>
|
|
3303
|
+
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  }</div>
|
|
3304
|
+
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span> }</div>
|
|
3299
3305
|
</div><!-- fragment -->
|
|
3300
3306
|
</div>
|
|
3301
3307
|
</div>
|
|
@@ -3316,26 +3322,26 @@ Private Attributes</h2></td></tr>
|
|
|
3316
3322
|
|
|
3317
3323
|
<p>Sanity check for <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a>. </p>
|
|
3318
3324
|
|
|
3319
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3320
|
-
<div class="fragment"><div class="line"><a name="
|
|
3321
|
-
<div class="line"><a name="
|
|
3322
|
-
<div class="line"><a name="
|
|
3323
|
-
<div class="line"><a name="
|
|
3324
|
-
<div class="line"><a name="
|
|
3325
|
-
<div class="line"><a name="
|
|
3326
|
-
<div class="line"><a name="
|
|
3327
|
-
<div class="line"><a name="
|
|
3328
|
-
<div class="line"><a name="
|
|
3329
|
-
<div class="line"><a name="
|
|
3330
|
-
<div class="line"><a name="
|
|
3331
|
-
<div class="line"><a name="
|
|
3332
|
-
<div class="line"><a name="
|
|
3333
|
-
<div class="line"><a name="
|
|
3334
|
-
<div class="line"><a name="
|
|
3335
|
-
<div class="line"><a name="
|
|
3336
|
-
<div class="line"><a name="
|
|
3337
|
-
<div class="line"><a name="
|
|
3338
|
-
<div class="line"><a name="
|
|
3325
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01133">1133</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3326
|
+
<div class="fragment"><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> {</div>
|
|
3327
|
+
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> nIter = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); nIter != <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++nIter)</div>
|
|
3328
|
+
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  {</div>
|
|
3329
|
+
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  (void) <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nIter->first);</div>
|
|
3330
|
+
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <span class="comment">//TODO::</span></div>
|
|
3331
|
+
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  <span class="comment">// (1) every source(root) node of a pag tree should be object node</span></div>
|
|
3332
|
+
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <span class="comment">// if a node has no incoming edge, but has outgoing edges</span></div>
|
|
3333
|
+
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <span class="comment">// then it has to be an object node.</span></div>
|
|
3334
|
+
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  <span class="comment">// (2) make sure every variable should be initialized</span></div>
|
|
3335
|
+
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  <span class="comment">// otherwise it causes the a null pointer, the aliasing relation may not be captured</span></div>
|
|
3336
|
+
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <span class="comment">// when loading a pointer value should make sure</span></div>
|
|
3337
|
+
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  <span class="comment">// some value has been store into this pointer before</span></div>
|
|
3338
|
+
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  <span class="comment">// q = load p, some value should stored into p first like store w p;</span></div>
|
|
3339
|
+
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  <span class="comment">// (3) make sure PAGNode should not have a const expr value (pointer should have unique def)</span></div>
|
|
3340
|
+
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  <span class="comment">// (4) look closely into addComplexConsForExt, make sure program locations(e.g.,inst bb)</span></div>
|
|
3341
|
+
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <span class="comment">// are set correctly for dummy gepval node</span></div>
|
|
3342
|
+
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <span class="comment">// (5) reduce unnecessary copy edge (const casts) and ensure correctness.</span></div>
|
|
3343
|
+
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  }</div>
|
|
3344
|
+
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> }</div>
|
|
3339
3345
|
</div><!-- fragment -->
|
|
3340
3346
|
</div>
|
|
3341
3347
|
</div>
|
|
@@ -3365,83 +3371,83 @@ Private Attributes</h2></td></tr>
|
|
|
3365
3371
|
<p>We assume every <a class="el" href="classSVF_1_1GepValVar.html">GepValVar</a> and its <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> are unique across whole program</p>
|
|
3366
3372
|
<p>We will have one unique function exit <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> for all returns</p>
|
|
3367
3373
|
|
|
3368
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3369
|
-
<div class="fragment"><div class="line"><a name="
|
|
3370
|
-
<div class="line"><a name="
|
|
3371
|
-
<div class="line"><a name="
|
|
3372
|
-
<div class="line"><a name="
|
|
3373
|
-
<div class="line"><a name="
|
|
3374
|
-
<div class="line"><a name="
|
|
3375
|
-
<div class="line"><a name="
|
|
3376
|
-
<div class="line"><a name="
|
|
3377
|
-
<div class="line"><a name="
|
|
3378
|
-
<div class="line"><a name="
|
|
3379
|
-
<div class="line"><a name="
|
|
3380
|
-
<div class="line"><a name="
|
|
3381
|
-
<div class="line"><a name="
|
|
3382
|
-
<div class="line"><a name="
|
|
3383
|
-
<div class="line"><a name="
|
|
3374
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01207">1207</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3375
|
+
<div class="fragment"><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> {</div>
|
|
3376
|
+
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</div>
|
|
3377
|
+
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  <span class="keywordflow">return</span>;</div>
|
|
3378
|
+
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  </div>
|
|
3379
|
+
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  assert(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a> && <span class="stringliteral">"current Val is nullptr?"</span>);</div>
|
|
3380
|
+
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  edge-><a class="code" href="classSVF_1_1SVFStmt.html#a0e45ab5b38059371c47d5f2011118a4d">setBB</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>!=<span class="keyword">nullptr</span> ? <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a> : <span class="keyword">nullptr</span>);</div>
|
|
3381
|
+
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  edge-><a class="code" href="classSVF_1_1SVFStmt.html#a6ae58a22d43361904c7033f5c790da38">setValue</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>);</div>
|
|
3382
|
+
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <span class="comment">// backmap in valuToEdgeMap</span></div>
|
|
3383
|
+
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a51201a8fce21b56e3f59a31af04c7b76">mapValueToEdge</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>, edge);</div>
|
|
3384
|
+
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#ae0b05ce161d62362642803158228e5d0">getGlobalICFGNode</a>();</div>
|
|
3385
|
+
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* curInst = SVFUtil::dyn_cast<SVFInstruction>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>))</div>
|
|
3386
|
+
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  {</div>
|
|
3387
|
+
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* srcFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction();</div>
|
|
3388
|
+
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* dstFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction();</div>
|
|
3389
|
+
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  <span class="keywordflow">if</span>(srcFun!=<span class="keyword">nullptr</span> && !SVFUtil::isa<RetPE>(edge) && !SVFUtil::isa<SVFFunction>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getValue()))</div>
|
|
3390
|
+
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  {</div>
|
|
3391
|
+
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  assert(srcFun==curInst->getFunction() && <span class="stringliteral">"SrcNode of the PAGEdge not in the same function?"</span>);</div>
|
|
3392
|
+
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  }</div>
|
|
3393
|
+
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  <span class="keywordflow">if</span>(dstFun!=<span class="keyword">nullptr</span> && !SVFUtil::isa<CallPE>(edge) && !SVFUtil::isa<SVFFunction>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getValue()))</div>
|
|
3384
3394
|
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  {</div>
|
|
3385
|
-
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  assert(
|
|
3395
|
+
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  assert(dstFun==curInst->getFunction() && <span class="stringliteral">"DstNode of the PAGEdge not in the same function?"</span>);</div>
|
|
3386
3396
|
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  }</div>
|
|
3387
|
-
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span> 
|
|
3388
|
-
<div class="line"><a name="
|
|
3389
|
-
<div class="line"><a name="
|
|
3390
|
-
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  }</div>
|
|
3397
|
+
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  </div>
|
|
3398
|
+
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  <span class="keywordflow">if</span> (!(SVFUtil::isa<GepStmt>(edge) && SVFUtil::isa<GepValVar>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>())))</div>
|
|
3399
|
+
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  assert(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a> && <span class="stringliteral">"instruction does not have a basic block??"</span>);</div>
|
|
3391
3400
|
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  </div>
|
|
3392
|
-
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <span class="keywordflow">if</span>
|
|
3393
|
-
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span> 
|
|
3394
|
-
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  </div>
|
|
3395
|
-
<div class="line"><a name="
|
|
3401
|
+
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <span class="keywordflow">if</span>(curInst->isRetInst())</div>
|
|
3402
|
+
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  {</div>
|
|
3403
|
+
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(curInst->getFunction());</div>
|
|
3404
|
+
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  }</div>
|
|
3405
|
+
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  <span class="keywordflow">else</span></div>
|
|
3396
3406
|
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  {</div>
|
|
3397
|
-
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span> 
|
|
3398
|
-
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> 
|
|
3399
|
-
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> 
|
|
3400
|
-
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span> 
|
|
3401
|
-
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span> 
|
|
3402
|
-
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> 
|
|
3403
|
-
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> 
|
|
3404
|
-
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> 
|
|
3405
|
-
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> 
|
|
3406
|
-
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> 
|
|
3407
|
-
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> 
|
|
3408
|
-
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> 
|
|
3409
|
-
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> 
|
|
3410
|
-
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> 
|
|
3411
|
-
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span> 
|
|
3412
|
-
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> 
|
|
3413
|
-
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span> 
|
|
3414
|
-
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span> 
|
|
3415
|
-
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span> 
|
|
3416
|
-
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> 
|
|
3417
|
-
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span> 
|
|
3418
|
-
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span> 
|
|
3419
|
-
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span> 
|
|
3420
|
-
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> 
|
|
3421
|
-
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span> 
|
|
3407
|
+
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  <span class="keywordflow">if</span>(SVFUtil::isa<RetPE>(edge))</div>
|
|
3408
|
+
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">getRetICFGNode</a>(curInst);</div>
|
|
3409
|
+
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  <span class="keywordflow">else</span></div>
|
|
3410
|
+
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(curInst);</div>
|
|
3411
|
+
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  }</div>
|
|
3412
|
+
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  }</div>
|
|
3413
|
+
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* arg = SVFUtil::dyn_cast<SVFArgument>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>))</div>
|
|
3414
|
+
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  {</div>
|
|
3415
|
+
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  assert(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a> && (<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>-><a class="code" href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">getParent</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#a793f485e92d12cf407f2ffa41861eb3d">getEntryBlock</a>() == <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>));</div>
|
|
3416
|
+
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(arg->getParent());</div>
|
|
3417
|
+
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  }</div>
|
|
3418
|
+
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<SVFConstant>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>) ||</div>
|
|
3419
|
+
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  SVFUtil::isa<SVFFunction>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>) ||</div>
|
|
3420
|
+
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  SVFUtil::isa<SVFMetadataAsValue>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#aefc70f2a0a2103259ae36d026cbb18be">curVal</a>))</div>
|
|
3421
|
+
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  {</div>
|
|
3422
|
+
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>)</div>
|
|
3423
|
+
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">addGlobalPAGEdge</a>(edge);</div>
|
|
3424
|
+
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  <span class="keywordflow">else</span></div>
|
|
3425
|
+
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  {</div>
|
|
3426
|
+
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#a8219f7e2581cc9974b42cf95d8318b15">curBB</a>-><a class="code" href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">front</a>());</div>
|
|
3427
|
+
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  }</div>
|
|
3428
|
+
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  }</div>
|
|
3429
|
+
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  <span class="keywordflow">else</span></div>
|
|
3430
|
+
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  {</div>
|
|
3431
|
+
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"what else value can we have?"</span>);</div>
|
|
3422
3432
|
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  }</div>
|
|
3423
|
-
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> 
|
|
3424
|
-
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> 
|
|
3425
|
-
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> 
|
|
3426
|
-
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> 
|
|
3427
|
-
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> 
|
|
3428
|
-
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span> 
|
|
3429
|
-
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span> 
|
|
3430
|
-
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span> 
|
|
3431
|
-
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span> 
|
|
3432
|
-
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> 
|
|
3433
|
-
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span> 
|
|
3434
|
-
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span> 
|
|
3435
|
-
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> 
|
|
3436
|
-
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span> 
|
|
3437
|
-
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span> 
|
|
3438
|
-
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span> 
|
|
3439
|
-
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> 
|
|
3440
|
-
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span> 
|
|
3441
|
-
<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(exitNode, retNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">ICFGEdge::RetCF</a>))</div>
|
|
3442
|
-
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  SVFUtil::cast<RetCFGEdge>(edge)->addRetPE(retPE);</div>
|
|
3443
|
-
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  }</div>
|
|
3444
|
-
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span> }</div>
|
|
3433
|
+
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  </div>
|
|
3434
|
+
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a6a84868ab4e2845e884fba08d82b40f6">addToSVFStmtList</a>(icfgNode,edge);</div>
|
|
3435
|
+
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  icfgNode-><a class="code" href="classSVF_1_1ICFGNode.html#a8a133398c691ab3639ceefbc57cd33be">addSVFStmt</a>(edge);</div>
|
|
3436
|
+
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* callPE = SVFUtil::dyn_cast<CallPE>(edge))</div>
|
|
3437
|
+
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  {</div>
|
|
3438
|
+
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callNode = <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>*<span class="keyword">></span>(callPE->getCallSite());</div>
|
|
3439
|
+
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* entryNode = <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>*<span class="keyword">></span>(callPE->getFunEntryICFGNode());</div>
|
|
3440
|
+
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(callNode,entryNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e">ICFGEdge::CallCF</a>))</div>
|
|
3441
|
+
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  SVFUtil::cast<CallCFGEdge>(edge)->addCallPE(callPE);</div>
|
|
3442
|
+
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  }</div>
|
|
3443
|
+
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* retPE = SVFUtil::dyn_cast<RetPE>(edge))</div>
|
|
3444
|
+
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  {</div>
|
|
3445
|
+
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retNode = <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>*<span class="keyword">></span>(retPE->getCallSite()->getRetICFGNode());</div>
|
|
3446
|
+
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* exitNode = <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>*<span class="keyword">></span>(retPE->getFunExitICFGNode());</div>
|
|
3447
|
+
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(exitNode, retNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">ICFGEdge::RetCF</a>))</div>
|
|
3448
|
+
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  SVFUtil::cast<RetCFGEdge>(edge)->addRetPE(retPE);</div>
|
|
3449
|
+
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  }</div>
|
|
3450
|
+
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span> }</div>
|
|
3445
3451
|
</div><!-- fragment -->
|
|
3446
3452
|
</div>
|
|
3447
3453
|
</div>
|
|
@@ -3549,38 +3555,38 @@ Private Attributes</h2></td></tr>
|
|
|
3549
3555
|
|
|
3550
3556
|
<p>connect PAG edges based on callgraph </p>
|
|
3551
3557
|
|
|
3552
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3553
|
-
<div class="fragment"><div class="line"><a name="
|
|
3554
|
-
<div class="line"><a name="
|
|
3555
|
-
<div class="line"><a name="
|
|
3556
|
-
<div class="line"><a name="
|
|
3557
|
-
<div class="line"><a name="
|
|
3558
|
-
<div class="line"><a name="
|
|
3559
|
-
<div class="line"><a name="
|
|
3560
|
-
<div class="line"><a name="
|
|
3561
|
-
<div class="line"><a name="
|
|
3562
|
-
<div class="line"><a name="
|
|
3563
|
-
<div class="line"><a name="
|
|
3564
|
-
<div class="line"><a name="
|
|
3565
|
-
<div class="line"><a name="
|
|
3566
|
-
<div class="line"><a name="
|
|
3567
|
-
<div class="line"><a name="
|
|
3568
|
-
<div class="line"><a name="
|
|
3569
|
-
<div class="line"><a name="
|
|
3570
|
-
<div class="line"><a name="
|
|
3571
|
-
<div class="line"><a name="
|
|
3572
|
-
<div class="line"><a name="
|
|
3573
|
-
<div class="line"><a name="
|
|
3574
|
-
<div class="line"><a name="
|
|
3575
|
-
<div class="line"><a name="
|
|
3576
|
-
<div class="line"><a name="
|
|
3577
|
-
<div class="line"><a name="
|
|
3578
|
-
<div class="line"><a name="
|
|
3579
|
-
<div class="line"><a name="
|
|
3580
|
-
<div class="line"><a name="
|
|
3581
|
-
<div class="line"><a name="
|
|
3582
|
-
<div class="line"><a name="
|
|
3583
|
-
<div class="line"><a name="
|
|
3558
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l01097">1097</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3559
|
+
<div class="fragment"><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> {</div>
|
|
3560
|
+
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  PTACallGraph::CallEdgeMap::const_iterator iter = callgraph-><a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().begin();</div>
|
|
3561
|
+
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  PTACallGraph::CallEdgeMap::const_iterator eiter = callgraph-><a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().end();</div>
|
|
3562
|
+
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordflow">for</span> (; iter != eiter; iter++)</div>
|
|
3563
|
+
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  {</div>
|
|
3564
|
+
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlock = iter->first;</div>
|
|
3565
|
+
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::cast<CallBase>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getLLVMValue(callBlock-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()));</div>
|
|
3566
|
+
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  assert(callBlock-><a class="code" href="classSVF_1_1CallICFGNode.html#aa11226a2e4fa6a7b1d78006cc8ca0518">isIndirectCall</a>() && <span class="stringliteral">"this is not an indirect call?"</span>);</div>
|
|
3567
|
+
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a>& functions = iter->second;</div>
|
|
3568
|
+
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  <span class="keywordflow">for</span> (PTACallGraph::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)</div>
|
|
3569
|
+
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  {</div>
|
|
3570
|
+
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = SVFUtil::cast<Function>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getLLVMValue(*func_iter));</div>
|
|
3571
|
+
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  </div>
|
|
3572
|
+
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(*func_iter))</div>
|
|
3573
|
+
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  {</div>
|
|
3574
|
+
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(callee, callee->empty() ? <span class="keyword">nullptr</span> : &callee->getEntryBlock());</div>
|
|
3575
|
+
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(callee);</div>
|
|
3576
|
+
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8b664a9d689562bd857f056e6e08c59b">handleExtCall</a>(callbase, svfcallee);</div>
|
|
3577
|
+
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  }</div>
|
|
3578
|
+
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <span class="keywordflow">else</span></div>
|
|
3579
|
+
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  {</div>
|
|
3580
|
+
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(callBlock-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>(), callBlock-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()-><a class="code" href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">getParent</a>());</div>
|
|
3581
|
+
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515">handleDirectCall</a>(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>*<span class="keyword">></span>(callbase), callee);</div>
|
|
3582
|
+
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  }</div>
|
|
3583
|
+
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  }</div>
|
|
3584
|
+
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  }</div>
|
|
3585
|
+
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  </div>
|
|
3586
|
+
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="comment">// dump SVFIR</span></div>
|
|
3587
|
+
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1dd9ad3f11454be49b4c5099503db8e8">Options::PAGDotGraph</a>())</div>
|
|
3588
|
+
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">dump</a>(<span class="stringliteral">"svfir_final"</span>);</div>
|
|
3589
|
+
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span> }</div>
|
|
3584
3590
|
</div><!-- fragment -->
|
|
3585
3591
|
</div>
|
|
3586
3592
|
</div>
|
|
@@ -3611,20 +3617,20 @@ Private Attributes</h2></td></tr>
|
|
|
3611
3617
|
<p>Our visit overrides. </p>
|
|
3612
3618
|
<p>Visit alloca instructions Add edge V (dst) <– O (src), V here is a value node on <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a>, O is object node on <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> </p>
|
|
3613
3619
|
|
|
3614
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3615
|
-
<div class="fragment"><div class="line"><a name="
|
|
3616
|
-
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  </div>
|
|
3617
|
-
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="comment">// AllocaInst should always be a pointer type</span></div>
|
|
3618
|
-
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  assert(SVFUtil::isa<PointerType>(inst.getType()));</div>
|
|
3619
|
-
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  </div>
|
|
3620
|
-
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process alloca "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(&inst)->toString() << <span class="stringliteral">" \n"</span>);</div>
|
|
3621
|
-
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
3620
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00633">633</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3621
|
+
<div class="fragment"><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> {</div>
|
|
3622
3622
|
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  </div>
|
|
3623
|
-
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <
|
|
3624
|
-
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span> 
|
|
3625
|
-
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span> 
|
|
3626
|
-
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  </div>
|
|
3627
|
-
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span> 
|
|
3623
|
+
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="comment">// AllocaInst should always be a pointer type</span></div>
|
|
3624
|
+
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  assert(SVFUtil::isa<PointerType>(inst.getType()));</div>
|
|
3625
|
+
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  </div>
|
|
3626
|
+
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process alloca "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(&inst)->toString() << <span class="stringliteral">" \n"</span>);</div>
|
|
3627
|
+
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
3628
|
+
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  </div>
|
|
3629
|
+
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">getObjectNode</a>(&inst);</div>
|
|
3630
|
+
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  </div>
|
|
3631
|
+
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a9b17524286226edb8dbae953d6559423">addAddrWithStackArraySz</a>(src, dst, inst);</div>
|
|
3632
|
+
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  </div>
|
|
3633
|
+
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span> }</div>
|
|
3628
3634
|
</div><!-- fragment -->
|
|
3629
3635
|
</div>
|
|
3630
3636
|
</div>
|
|
@@ -3707,17 +3713,17 @@ Private Attributes</h2></td></tr>
|
|
|
3707
3713
|
</div><div class="memdoc">
|
|
3708
3714
|
<p>Visit Binary Operator </p>
|
|
3709
3715
|
|
|
3710
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3711
|
-
<div class="fragment"><div class="line"><a name="
|
|
3712
|
-
<div class="line"><a name="
|
|
3713
|
-
<div class="line"><a name="
|
|
3714
|
-
<div class="line"><a name="
|
|
3715
|
-
<div class="line"><a name="
|
|
3716
|
-
<div class="line"><a name="
|
|
3717
|
-
<div class="line"><a name="
|
|
3718
|
-
<div class="line"><a name="
|
|
3719
|
-
<div class="line"><a name="
|
|
3720
|
-
<div class="line"><a name="
|
|
3716
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00749">749</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3717
|
+
<div class="fragment"><div class="line"><a name="l00750"></a><span class="lineno"> 750</span> {</div>
|
|
3718
|
+
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
3719
|
+
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  assert(inst.getNumOperands() == 2 && <span class="stringliteral">"not two operands for BinaryOperator?"</span>);</div>
|
|
3720
|
+
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* op1 = inst.getOperand(0);</div>
|
|
3721
|
+
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op1Node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(op1);</div>
|
|
3722
|
+
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* op2 = inst.getOperand(1);</div>
|
|
3723
|
+
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op2Node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(op2);</div>
|
|
3724
|
+
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> opcode = inst.getOpcode();</div>
|
|
3725
|
+
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3f954c61381fe31088e791772c334105">addBinaryOPEdge</a>(op1Node, op2Node, dst, opcode);</div>
|
|
3726
|
+
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> }</div>
|
|
3721
3727
|
</div><!-- fragment -->
|
|
3722
3728
|
</div>
|
|
3723
3729
|
</div>
|
|
@@ -3738,27 +3744,27 @@ Private Attributes</h2></td></tr>
|
|
|
3738
3744
|
</div><div class="memdoc">
|
|
3739
3745
|
<p>Branch and switch instructions are treated as UnaryOP br cmp label if.then, label if.else </p>
|
|
3740
3746
|
|
|
3741
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3742
|
-
<div class="fragment"><div class="line"><a name="
|
|
3743
|
-
<div class="line"><a name="
|
|
3744
|
-
<div class="line"><a name="
|
|
3745
|
-
<div class="line"><a name="
|
|
3746
|
-
<div class="line"><a name="
|
|
3747
|
-
<div class="line"><a name="
|
|
3748
|
-
<div class="line"><a name="
|
|
3749
|
-
<div class="line"><a name="
|
|
3750
|
-
<div class="line"><a name="
|
|
3751
|
-
<div class="line"><a name="
|
|
3752
|
-
<div class="line"><a name="
|
|
3753
|
-
<div class="line"><a name="
|
|
3754
|
-
<div class="line"><a name="
|
|
3755
|
-
<div class="line"><a name="
|
|
3756
|
-
<div class="line"><a name="
|
|
3757
|
-
<div class="line"><a name="
|
|
3758
|
-
<div class="line"><a name="
|
|
3759
|
-
<div class="line"><a name="
|
|
3760
|
-
<div class="line"><a name="
|
|
3761
|
-
<div class="line"><a name="
|
|
3747
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00925">925</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3748
|
+
<div class="fragment"><div class="line"><a name="l00926"></a><span class="lineno"> 926</span> {</div>
|
|
3749
|
+
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> brinst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
3750
|
+
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond;</div>
|
|
3751
|
+
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <span class="keywordflow">if</span> (inst.isConditional())</div>
|
|
3752
|
+
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getCondition());</div>
|
|
3753
|
+
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <span class="keywordflow">else</span></div>
|
|
3754
|
+
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>();</div>
|
|
3755
|
+
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  </div>
|
|
3756
|
+
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  assert(inst.getNumSuccessors() <= 2 && <span class="stringliteral">"if/else has more than two branches?"</span>);</div>
|
|
3757
|
+
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  </div>
|
|
3758
|
+
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <a class="code" href="classSVF_1_1BranchStmt.html#a6a0e64824777f04be4c169125dd4f666">BranchStmt::SuccAndCondPairVec</a> successors;</div>
|
|
3759
|
+
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i < inst.getNumSuccessors(); ++i)</div>
|
|
3760
|
+
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  {</div>
|
|
3761
|
+
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succInst = &inst.getSuccessor(i)->front();</div>
|
|
3762
|
+
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfSuccInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(succInst);</div>
|
|
3763
|
+
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfSuccInst);</div>
|
|
3764
|
+
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  successors.push_back(std::make_pair(icfgNode, 1-i));</div>
|
|
3765
|
+
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  }</div>
|
|
3766
|
+
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5e56beb1a362b6e596183b04d37fd9e0">addBranchStmt</a>(brinst, cond,successors);</div>
|
|
3767
|
+
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span> }</div>
|
|
3762
3768
|
</div><!-- fragment -->
|
|
3763
3769
|
</div>
|
|
3764
3770
|
</div>
|
|
@@ -3778,10 +3784,10 @@ Private Attributes</h2></td></tr>
|
|
|
3778
3784
|
</table>
|
|
3779
3785
|
</div><div class="memdoc">
|
|
3780
3786
|
|
|
3781
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3782
|
-
<div class="fragment"><div class="line"><a name="
|
|
3783
|
-
<div class="line"><a name="
|
|
3784
|
-
<div class="line"><a name="
|
|
3787
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00816">816</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3788
|
+
<div class="fragment"><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> {</div>
|
|
3789
|
+
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5aa87f9ea35b30b4b4797f8a7f9f293c">visitCallSite</a>(&i);</div>
|
|
3790
|
+
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span> }</div>
|
|
3785
3791
|
</div><!-- fragment -->
|
|
3786
3792
|
</div>
|
|
3787
3793
|
</div>
|
|
@@ -3801,10 +3807,10 @@ Private Attributes</h2></td></tr>
|
|
|
3801
3807
|
</table>
|
|
3802
3808
|
</div><div class="memdoc">
|
|
3803
3809
|
|
|
3804
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3805
|
-
<div class="fragment"><div class="line"><a name="
|
|
3806
|
-
<div class="line"><a name="
|
|
3807
|
-
<div class="line"><a name="
|
|
3810
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00806">806</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3811
|
+
<div class="fragment"><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> {</div>
|
|
3812
|
+
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5aa87f9ea35b30b4b4797f8a7f9f293c">visitCallSite</a>(&i);</div>
|
|
3813
|
+
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span> }</div>
|
|
3808
3814
|
</div><!-- fragment -->
|
|
3809
3815
|
</div>
|
|
3810
3816
|
</div>
|
|
@@ -3825,48 +3831,48 @@ Private Attributes</h2></td></tr>
|
|
|
3825
3831
|
</div><div class="memdoc">
|
|
3826
3832
|
<p>Collect callsite arguments and returns</p>
|
|
3827
3833
|
|
|
3828
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3829
|
-
<div class="fragment"><div class="line"><a name="
|
|
3834
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00824">824</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3835
|
+
<div class="fragment"><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> {</div>
|
|
3836
|
+
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  </div>
|
|
3837
|
+
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="comment">// skip llvm intrinsics</span></div>
|
|
3838
|
+
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">isIntrinsicInst</a>(cs))</div>
|
|
3839
|
+
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">return</span>;</div>
|
|
3830
3840
|
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  </div>
|
|
3831
|
-
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="
|
|
3832
|
-
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span> 
|
|
3833
|
-
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span> 
|
|
3834
|
-
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  </div>
|
|
3835
|
-
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span> 
|
|
3836
|
-
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  </div>
|
|
3837
|
-
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <a class="code" href="
|
|
3838
|
-
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span> 
|
|
3839
|
-
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  </div>
|
|
3840
|
-
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span> 
|
|
3841
|
-
<div class="line"><a name="
|
|
3842
|
-
<div class="line"><a name="
|
|
3843
|
-
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a98341496bf470d23384f3d86a58591db">addCallSite</a>(callBlockNode);</div>
|
|
3841
|
+
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfcall = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(cs);</div>
|
|
3842
|
+
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  </div>
|
|
3843
|
+
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div>
|
|
3844
|
+
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process callsite "</span> << svfcall-><a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">toString</a>() << <span class="stringliteral">"\n"</span>);</div>
|
|
3845
|
+
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  </div>
|
|
3846
|
+
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callBlockNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(svfcall);</div>
|
|
3847
|
+
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a>* retBlockNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">getRetICFGNode</a>(svfcall);</div>
|
|
3848
|
+
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  </div>
|
|
3849
|
+
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a98341496bf470d23384f3d86a58591db">addCallSite</a>(callBlockNode);</div>
|
|
3850
|
+
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  </div>
|
|
3851
|
+
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i < cs->arg_size(); i++)</div>
|
|
3852
|
+
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a69963e4030433103e84e57fc015871d8">addCallSiteArgs</a>(callBlockNode,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs->getArgOperand(i))));</div>
|
|
3844
3853
|
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  </div>
|
|
3845
|
-
<div class="line"><a name="
|
|
3846
|
-
<div class="line"><a name="
|
|
3847
|
-
<div class="line"><a name="
|
|
3848
|
-
<div class="line"><a name="
|
|
3849
|
-
<div class="line"><a name="
|
|
3850
|
-
<div class="line"><a name="
|
|
3851
|
-
<div class="line"><a name="
|
|
3852
|
-
<div class="line"><a name="
|
|
3853
|
-
<div class="line"><a name="
|
|
3854
|
-
<div class="line"><a name="
|
|
3855
|
-
<div class="line"><a name="
|
|
3854
|
+
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <span class="keywordflow">if</span>(!cs->getType()->isVoidTy())</div>
|
|
3855
|
+
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a72efebdfe007ec8c515967ede76b6ce0">addCallSiteRets</a>(retBlockNode,<a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(cs)));</div>
|
|
3856
|
+
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  </div>
|
|
3857
|
+
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *callee = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad56c48be3ba6ebb95416623256524097">LLVMUtil::getCallee</a>(cs))</div>
|
|
3858
|
+
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  {</div>
|
|
3859
|
+
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  callee = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a21636200f17c62034720c4287aa818b5">LLVMUtil::getDefFunForMultipleModule</a>(callee);</div>
|
|
3860
|
+
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(callee);</div>
|
|
3861
|
+
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(svfcallee))</div>
|
|
3862
|
+
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  {</div>
|
|
3863
|
+
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8b664a9d689562bd857f056e6e08c59b">handleExtCall</a>(cs, svfcallee);</div>
|
|
3864
|
+
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  }</div>
|
|
3865
|
+
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="keywordflow">else</span></div>
|
|
3856
3866
|
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  {</div>
|
|
3857
|
-
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#
|
|
3867
|
+
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515">handleDirectCall</a>(cs, callee);</div>
|
|
3858
3868
|
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  }</div>
|
|
3859
|
-
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span> 
|
|
3860
|
-
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span> 
|
|
3861
|
-
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span> 
|
|
3862
|
-
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span> 
|
|
3863
|
-
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span> 
|
|
3864
|
-
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span> 
|
|
3865
|
-
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span> 
|
|
3866
|
-
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="comment">//If the callee was not identified as a function (null F), this is indirect.</span></div>
|
|
3867
|
-
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5ae68d4465feb54fcb8fd0cf20b7a71a">handleIndCall</a>(cs);</div>
|
|
3868
|
-
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  }</div>
|
|
3869
|
-
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span> }</div>
|
|
3869
|
+
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  }</div>
|
|
3870
|
+
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="keywordflow">else</span></div>
|
|
3871
|
+
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  {</div>
|
|
3872
|
+
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <span class="comment">//If the callee was not identified as a function (null F), this is indirect.</span></div>
|
|
3873
|
+
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5ae68d4465feb54fcb8fd0cf20b7a71a">handleIndCall</a>(cs);</div>
|
|
3874
|
+
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  }</div>
|
|
3875
|
+
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span> }</div>
|
|
3870
3876
|
</div><!-- fragment -->
|
|
3871
3877
|
</div>
|
|
3872
3878
|
</div>
|
|
@@ -3886,26 +3892,16 @@ Private Attributes</h2></td></tr>
|
|
|
3886
3892
|
</table>
|
|
3887
3893
|
</div><div class="memdoc">
|
|
3888
3894
|
|
|
3889
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3890
|
-
<div class="fragment"><div class="line"><a name="
|
|
3891
|
-
<div class="line"><a name="
|
|
3892
|
-
<div class="line"><a name="
|
|
3893
|
-
<div class="line"><a name="
|
|
3894
|
-
<div class="line"><a name="
|
|
3895
|
-
<div class="line"><a name="
|
|
3896
|
-
<div class="line"><a name="
|
|
3897
|
-
<div class="line"><a name="
|
|
3898
|
-
<div class="line"><a name="
|
|
3899
|
-
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordflow">else</span></div>
|
|
3900
|
-
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  {</div>
|
|
3901
|
-
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getOperand(0);</div>
|
|
3902
|
-
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <span class="keywordflow">if</span> (!SVFUtil::isa<PointerType>(opnd->getType()))</div>
|
|
3903
|
-
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  opnd = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">stripAllCasts</a>(opnd);</div>
|
|
3904
|
-
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  </div>
|
|
3905
|
-
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
|
|
3906
|
-
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a29d377d01267c364ce1badd4c0f2e98f">addCopyEdge</a>(src, dst, <a class="code" href="classSVF_1_1SVFIRBuilder.html#a090378de3e320d9589d7847c0a6b1936">getCopyKind</a>(&inst));</div>
|
|
3907
|
-
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  }</div>
|
|
3908
|
-
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span> }</div>
|
|
3895
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00735">735</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3896
|
+
<div class="fragment"><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> {</div>
|
|
3897
|
+
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  </div>
|
|
3898
|
+
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process cast "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(&inst)->toString() << <span class="stringliteral">" \n"</span>);</div>
|
|
3899
|
+
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
3900
|
+
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  </div>
|
|
3901
|
+
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getOperand(0);</div>
|
|
3902
|
+
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
|
|
3903
|
+
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a29d377d01267c364ce1badd4c0f2e98f">addCopyEdge</a>(src, dst, <a class="code" href="classSVF_1_1SVFIRBuilder.html#a090378de3e320d9589d7847c0a6b1936">getCopyKind</a>(&inst));</div>
|
|
3904
|
+
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span> }</div>
|
|
3909
3905
|
</div><!-- fragment -->
|
|
3910
3906
|
</div>
|
|
3911
3907
|
</div>
|
|
@@ -3926,17 +3922,17 @@ Private Attributes</h2></td></tr>
|
|
|
3926
3922
|
</div><div class="memdoc">
|
|
3927
3923
|
<p>Visit compare instruction </p>
|
|
3928
3924
|
|
|
3929
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3930
|
-
<div class="fragment"><div class="line"><a name="
|
|
3931
|
-
<div class="line"><a name="
|
|
3932
|
-
<div class="line"><a name="
|
|
3933
|
-
<div class="line"><a name="
|
|
3934
|
-
<div class="line"><a name="
|
|
3935
|
-
<div class="line"><a name="
|
|
3936
|
-
<div class="line"><a name="
|
|
3937
|
-
<div class="line"><a name="
|
|
3938
|
-
<div class="line"><a name="
|
|
3939
|
-
<div class="line"><a name="
|
|
3925
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00777">777</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3926
|
+
<div class="fragment"><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> {</div>
|
|
3927
|
+
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
3928
|
+
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  assert(inst.getNumOperands() == 2 && <span class="stringliteral">"not two operands for compare instruction?"</span>);</div>
|
|
3929
|
+
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* op1 = inst.getOperand(0);</div>
|
|
3930
|
+
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op1Node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(op1);</div>
|
|
3931
|
+
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* op2 = inst.getOperand(1);</div>
|
|
3932
|
+
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op2Node = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(op2);</div>
|
|
3933
|
+
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> predicate = inst.getPredicate();</div>
|
|
3934
|
+
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4e1d75ac5f54872762460c86a67de3a6">addCmpEdge</a>(op1Node, op2Node, dst, predicate);</div>
|
|
3935
|
+
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span> }</div>
|
|
3940
3936
|
</div><!-- fragment -->
|
|
3941
3937
|
</div>
|
|
3942
3938
|
</div>
|
|
@@ -3958,11 +3954,11 @@ Private Attributes</h2></td></tr>
|
|
|
3958
3954
|
<p>The �extractelement� instruction extracts a single scalar element from a vector at a specified index. TODO: for now we just assume the pointer after extraction points to blackhole The first operand of an �extractelement� instruction is a value of vector type. The second operand is an index indicating the position from which to extract the element.</p>
|
|
3959
3955
|
<p><result> = extractelement <4 x i32> vec, i32 0 ; yields i32 </p>
|
|
3960
3956
|
|
|
3961
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3962
|
-
<div class="fragment"><div class="line"><a name="
|
|
3963
|
-
<div class="line"><a name="
|
|
3964
|
-
<div class="line"><a name="
|
|
3965
|
-
<div class="line"><a name="
|
|
3957
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00915">915</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3958
|
+
<div class="fragment"><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> {</div>
|
|
3959
|
+
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
3960
|
+
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
|
|
3961
|
+
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span> }</div>
|
|
3966
3962
|
</div><!-- fragment -->
|
|
3967
3963
|
</div>
|
|
3968
3964
|
</div>
|
|
@@ -3983,11 +3979,11 @@ Private Attributes</h2></td></tr>
|
|
|
3983
3979
|
</div><div class="memdoc">
|
|
3984
3980
|
<p>visit extract value instructions for structures in registers TODO: for now we just assume the pointer after extraction points to blackhole for example %24 = extractvalue { i32, struct.s_hash* } call34, 0 %24 is a pointer points to first field of a register value call34 however we can not create call34 as an memory object, as it is register value. Is that necessary treat extract value as getelementptr instruction later to get more precise results? </p>
|
|
3985
3981
|
|
|
3986
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
3987
|
-
<div class="fragment"><div class="line"><a name="
|
|
3988
|
-
<div class="line"><a name="
|
|
3989
|
-
<div class="line"><a name="
|
|
3990
|
-
<div class="line"><a name="
|
|
3982
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00901">901</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
3983
|
+
<div class="fragment"><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> {</div>
|
|
3984
|
+
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
3985
|
+
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
|
|
3986
|
+
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span> }</div>
|
|
3991
3987
|
</div><!-- fragment -->
|
|
3992
3988
|
</div>
|
|
3993
3989
|
</div>
|
|
@@ -4040,16 +4036,16 @@ Private Attributes</h2></td></tr>
|
|
|
4040
4036
|
<p><result> = freeze ty <val> If <val> is undef or poison, ‘freeze’ returns an arbitrary, but fixed value of type <code>ty</code> Otherwise, this instruction is a no-op and returns the input <val></p>
|
|
4041
4037
|
<p><result> = freeze ty <val> If <val> is undef or poison, ‘freeze’ returns an arbitrary, but fixed value of type <code>ty</code> Otherwise, this instruction is a no-op and returns the input <val> For now, we assume <val> is never a poison or undef. </p>
|
|
4042
4038
|
|
|
4043
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
4044
|
-
<div class="fragment"><div class="line"><a name="
|
|
4045
|
-
<div class="line"><a name="
|
|
4046
|
-
<div class="line"><a name="
|
|
4047
|
-
<div class="line"><a name="
|
|
4048
|
-
<div class="line"><a name="
|
|
4049
|
-
<div class="line"><a name="
|
|
4050
|
-
<div class="line"><a name="
|
|
4051
|
-
<div class="line"><a name="
|
|
4052
|
-
<div class="line"><a name="
|
|
4039
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00986">986</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
4040
|
+
<div class="fragment"><div class="line"><a name="l00987"></a><span class="lineno"> 987</span> {</div>
|
|
4041
|
+
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
4042
|
+
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i < inst.getNumOperands(); i++)</div>
|
|
4043
|
+
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  {</div>
|
|
4044
|
+
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getOperand(i);</div>
|
|
4045
|
+
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
|
|
4046
|
+
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a29d377d01267c364ce1badd4c0f2e98f">addCopyEdge</a>(src, dst, <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a3fbb25d7761cca1dd44e06e41e5570c9">CopyStmt::COPYVAL</a>);</div>
|
|
4047
|
+
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  }</div>
|
|
4048
|
+
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span> }</div>
|
|
4053
4049
|
</div><!-- fragment -->
|
|
4054
4050
|
</div>
|
|
4055
4051
|
</div>
|
|
@@ -4070,28 +4066,28 @@ Private Attributes</h2></td></tr>
|
|
|
4070
4066
|
</div><div class="memdoc">
|
|
4071
4067
|
<p>Visit getelementptr instructions </p>
|
|
4072
4068
|
|
|
4073
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
4074
|
-
<div class="fragment"><div class="line"><a name="
|
|
4075
|
-
<div class="line"><a name="
|
|
4076
|
-
<div class="line"><a name="
|
|
4077
|
-
<div class="line"><a name="
|
|
4078
|
-
<div class="line"><a name="
|
|
4079
|
-
<div class="line"><a name="
|
|
4080
|
-
<div class="line"><a name="
|
|
4081
|
-
<div class="line"><a name="
|
|
4082
|
-
<div class="line"><a name="
|
|
4083
|
-
<div class="line"><a name="
|
|
4084
|
-
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  </div>
|
|
4085
|
-
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  assert(SVFUtil::isa<PointerType>(inst.getType()));</div>
|
|
4086
|
-
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  </div>
|
|
4087
|
-
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process gep "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(&inst)->toString() << <span class="stringliteral">" \n"</span>);</div>
|
|
4088
|
-
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  </div>
|
|
4089
|
-
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getPointerOperand());</div>
|
|
4069
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00709">709</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
4070
|
+
<div class="fragment"><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> {</div>
|
|
4071
|
+
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  </div>
|
|
4072
|
+
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
4073
|
+
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="comment">// GetElementPtrInst should always be a pointer or a vector contains pointers</span></div>
|
|
4074
|
+
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="comment">// for now we don't handle vector type here</span></div>
|
|
4075
|
+
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="keywordflow">if</span>(SVFUtil::isa<VectorType>(inst.getType()))</div>
|
|
4076
|
+
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  {</div>
|
|
4077
|
+
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">addBlackHoleAddrEdge</a>(dst);</div>
|
|
4078
|
+
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">return</span>;</div>
|
|
4079
|
+
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  }</div>
|
|
4090
4080
|
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  </div>
|
|
4091
|
-
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span> 
|
|
4092
|
-
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> 
|
|
4093
|
-
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <a class="code" href="
|
|
4094
|
-
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> 
|
|
4081
|
+
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  assert(SVFUtil::isa<PointerType>(inst.getType()));</div>
|
|
4082
|
+
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  </div>
|
|
4083
|
+
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process gep "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(&inst)->toString() << <span class="stringliteral">" \n"</span>);</div>
|
|
4084
|
+
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  </div>
|
|
4085
|
+
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getPointerOperand());</div>
|
|
4086
|
+
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  </div>
|
|
4087
|
+
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a> ap(0, <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFType(inst.getSourceElementType()));</div>
|
|
4088
|
+
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordtype">bool</span> constGep = <a class="code" href="classSVF_1_1SVFIRBuilder.html#ac8c440fe6513495edb8949df5a32d979">computeGepOffset</a>(&inst, ap);</div>
|
|
4089
|
+
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4e1b6797df3e7b98da876f50741e6a3a">addGepEdge</a>(src, dst, ap, constGep);</div>
|
|
4090
|
+
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span> }</div>
|
|
4095
4091
|
</div><!-- fragment -->
|
|
4096
4092
|
</div>
|
|
4097
4093
|
</div>
|
|
@@ -4124,52 +4120,52 @@ Private Attributes</h2></td></tr>
|
|
|
4124
4120
|
<p>initialize global variable</p>
|
|
4125
4121
|
<p>initialize global functions</p>
|
|
4126
4122
|
|
|
4127
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
4128
|
-
<div class="fragment"><div class="line"><a name="
|
|
4129
|
-
<div class="line"><a name="
|
|
4130
|
-
<div class="line"><a name="
|
|
4131
|
-
<div class="line"><a name="
|
|
4132
|
-
<div class="line"><a name="
|
|
4133
|
-
<div class="line"><a name="
|
|
4134
|
-
<div class="line"><a name="
|
|
4135
|
-
<div class="line"><a name="
|
|
4136
|
-
<div class="line"><a name="
|
|
4137
|
-
<div class="line"><a name="
|
|
4138
|
-
<div class="line"><a name="
|
|
4139
|
-
<div class="line"><a name="
|
|
4140
|
-
<div class="line"><a name="
|
|
4141
|
-
<div class="line"><a name="
|
|
4142
|
-
<div class="line"><a name="
|
|
4143
|
-
<div class="line"><a name="
|
|
4144
|
-
<div class="line"><a name="
|
|
4145
|
-
<div class="line"><a name="
|
|
4146
|
-
<div class="line"><a name="
|
|
4147
|
-
<div class="line"><a name="
|
|
4148
|
-
<div class="line"><a name="
|
|
4149
|
-
<div class="line"><a name="
|
|
4150
|
-
<div class="line"><a name="
|
|
4151
|
-
<div class="line"><a name="
|
|
4152
|
-
<div class="line"><a name="
|
|
4153
|
-
<div class="line"><a name="
|
|
4154
|
-
<div class="line"><a name="
|
|
4155
|
-
<div class="line"><a name="
|
|
4156
|
-
<div class="line"><a name="
|
|
4157
|
-
<div class="line"><a name="
|
|
4158
|
-
<div class="line"><a name="
|
|
4159
|
-
<div class="line"><a name="
|
|
4160
|
-
<div class="line"><a name="
|
|
4161
|
-
<div class="line"><a name="
|
|
4162
|
-
<div class="line"><a name="
|
|
4163
|
-
<div class="line"><a name="
|
|
4164
|
-
<div class="line"><a name="
|
|
4165
|
-
<div class="line"><a name="
|
|
4166
|
-
<div class="line"><a name="
|
|
4167
|
-
<div class="line"><a name="
|
|
4168
|
-
<div class="line"><a name="
|
|
4169
|
-
<div class="line"><a name="
|
|
4170
|
-
<div class="line"><a name="
|
|
4171
|
-
<div class="line"><a name="
|
|
4172
|
-
<div class="line"><a name="
|
|
4123
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00580">580</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
4124
|
+
<div class="fragment"><div class="line"><a name="l00581"></a><span class="lineno"> 581</span> {</div>
|
|
4125
|
+
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  </div>
|
|
4126
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getLLVMModules())</div>
|
|
4127
|
+
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  {</div>
|
|
4128
|
+
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">for</span> (Module::global_iterator I = M.global_begin(), E = M.global_end(); I != E; ++I)</div>
|
|
4129
|
+
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  {</div>
|
|
4130
|
+
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *gvar = &*I;</div>
|
|
4131
|
+
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> idx = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(gvar);</div>
|
|
4132
|
+
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">getObjectNode</a>(gvar);</div>
|
|
4133
|
+
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  </div>
|
|
4134
|
+
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(gvar, <span class="keyword">nullptr</span>);</div>
|
|
4135
|
+
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(obj, idx);</div>
|
|
4136
|
+
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  </div>
|
|
4137
|
+
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keywordflow">if</span> (gvar->hasInitializer())</div>
|
|
4138
|
+
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  {</div>
|
|
4139
|
+
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a> *C = gvar->getInitializer();</div>
|
|
4140
|
+
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"add global var node "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(gvar)->toString() << <span class="stringliteral">"\n"</span>);</div>
|
|
4141
|
+
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">InitialGlobal</a>(gvar, C, 0);</div>
|
|
4142
|
+
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</div>
|
|
4143
|
+
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  }</div>
|
|
4144
|
+
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  </div>
|
|
4145
|
+
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  </div>
|
|
4146
|
+
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordflow">for</span> (Module::const_iterator I = M.begin(), E = M.end(); I != E; ++I)</div>
|
|
4147
|
+
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  {</div>
|
|
4148
|
+
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = &*I;</div>
|
|
4149
|
+
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> idx = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(fun);</div>
|
|
4150
|
+
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">getObjectNode</a>(fun);</div>
|
|
4151
|
+
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  </div>
|
|
4152
|
+
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"add global function node "</span> << fun->getName().str() << <span class="stringliteral">"\n"</span>);</div>
|
|
4153
|
+
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(fun, <span class="keyword">nullptr</span>);</div>
|
|
4154
|
+
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">addAddrEdge</a>(obj, idx);</div>
|
|
4155
|
+
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  }</div>
|
|
4156
|
+
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  </div>
|
|
4157
|
+
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="comment">// Handle global aliases (due to linkage of multiple bc files), e.g., @x = internal alias @y. We need to add a copy from y to x.</span></div>
|
|
4158
|
+
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">for</span> (Module::alias_iterator I = M.alias_begin(), E = M.alias_end(); I != E; I++)</div>
|
|
4159
|
+
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  {</div>
|
|
4160
|
+
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">GlobalAlias</a>* alias = &*I;</div>
|
|
4161
|
+
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(alias));</div>
|
|
4162
|
+
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(alias->getAliasee()));</div>
|
|
4163
|
+
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5adf8baa546292434ba1fec48db2d0a7">processCE</a>(alias->getAliasee());</div>
|
|
4164
|
+
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">setCurrentLocation</a>(alias, <span class="keyword">nullptr</span>);</div>
|
|
4165
|
+
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a29d377d01267c364ce1badd4c0f2e98f">addCopyEdge</a>(src, dst, <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a3fbb25d7761cca1dd44e06e41e5570c9">CopyStmt::COPYVAL</a>);</div>
|
|
4166
|
+
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  }</div>
|
|
4167
|
+
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  }</div>
|
|
4168
|
+
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span> }</div>
|
|
4173
4169
|
</div><!-- fragment -->
|
|
4174
4170
|
</div>
|
|
4175
4171
|
</div>
|
|
@@ -4285,10 +4281,10 @@ Private Attributes</h2></td></tr>
|
|
|
4285
4281
|
</table>
|
|
4286
4282
|
</div><div class="memdoc">
|
|
4287
4283
|
|
|
4288
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
4289
|
-
<div class="fragment"><div class="line"><a name="
|
|
4290
|
-
<div class="line"><a name="
|
|
4291
|
-
<div class="line"><a name="
|
|
4284
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00811">811</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
4285
|
+
<div class="fragment"><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> {</div>
|
|
4286
|
+
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5aa87f9ea35b30b4b4797f8a7f9f293c">visitCallSite</a>(&i);</div>
|
|
4287
|
+
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span> }</div>
|
|
4292
4288
|
</div><!-- fragment -->
|
|
4293
4289
|
</div>
|
|
4294
4290
|
</div>
|
|
@@ -4339,16 +4335,16 @@ Private Attributes</h2></td></tr>
|
|
|
4339
4335
|
</table>
|
|
4340
4336
|
</div><div class="memdoc">
|
|
4341
4337
|
|
|
4342
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
4343
|
-
<div class="fragment"><div class="line"><a name="
|
|
4344
|
-
<div class="line"><a name="
|
|
4345
|
-
<div class="line"><a name="
|
|
4346
|
-
<div class="line"><a name="
|
|
4347
|
-
<div class="line"><a name="
|
|
4348
|
-
<div class="line"><a name="
|
|
4349
|
-
<div class="line"><a name="
|
|
4350
|
-
<div class="line"><a name="
|
|
4351
|
-
<div class="line"><a name="
|
|
4338
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00677">677</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
4339
|
+
<div class="fragment"><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> {</div>
|
|
4340
|
+
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process load "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(&inst)->toString() << <span class="stringliteral">" \n"</span>);</div>
|
|
4341
|
+
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  </div>
|
|
4342
|
+
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
4343
|
+
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  </div>
|
|
4344
|
+
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getPointerOperand());</div>
|
|
4345
|
+
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  </div>
|
|
4346
|
+
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">addLoadEdge</a>(src, dst);</div>
|
|
4347
|
+
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span> }</div>
|
|
4352
4348
|
</div><!-- fragment -->
|
|
4353
4349
|
</div>
|
|
4354
4350
|
</div>
|
|
@@ -4369,28 +4365,28 @@ Private Attributes</h2></td></tr>
|
|
|
4369
4365
|
</div><div class="memdoc">
|
|
4370
4366
|
<p>Visit phi instructions </p>
|
|
4371
4367
|
|
|
4372
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
4373
|
-
<div class="fragment"><div class="line"><a name="
|
|
4374
|
-
<div class="line"><a name="
|
|
4375
|
-
<div class="line"><a name="
|
|
4376
|
-
<div class="line"><a name="
|
|
4377
|
-
<div class="line"><a name="
|
|
4378
|
-
<div class="line"><a name="
|
|
4379
|
-
<div class="line"><a name="
|
|
4380
|
-
<div class="line"><a name="
|
|
4381
|
-
<div class="line"><a name="
|
|
4382
|
-
<div class="line"><a name="
|
|
4383
|
-
<div class="line"><a name="
|
|
4384
|
-
<div class="line"><a name="
|
|
4385
|
-
<div class="line"><a name="
|
|
4386
|
-
<div class="line"><a name="
|
|
4387
|
-
<div class="line"><a name="
|
|
4388
|
-
<div class="line"><a name="
|
|
4389
|
-
<div class="line"><a name="
|
|
4390
|
-
<div class="line"><a name="
|
|
4391
|
-
<div class="line"><a name="
|
|
4392
|
-
<div class="line"><a name="
|
|
4393
|
-
<div class="line"><a name="
|
|
4368
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00651">651</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
4369
|
+
<div class="fragment"><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> {</div>
|
|
4370
|
+
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  </div>
|
|
4371
|
+
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process phi "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(&inst)->toString() << <span class="stringliteral">" \n"</span>);</div>
|
|
4372
|
+
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  </div>
|
|
4373
|
+
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
4374
|
+
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  </div>
|
|
4375
|
+
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i < inst.getNumIncomingValues(); ++i)</div>
|
|
4376
|
+
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  {</div>
|
|
4377
|
+
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = inst.getIncomingValue(i);</div>
|
|
4378
|
+
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* incomingInst = SVFUtil::dyn_cast<Instruction>(val);</div>
|
|
4379
|
+
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="keywordtype">bool</span> matched = (incomingInst == <span class="keyword">nullptr</span> ||</div>
|
|
4380
|
+
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  incomingInst->getFunction() == inst.getFunction());</div>
|
|
4381
|
+
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  (void) matched; <span class="comment">// Suppress warning of unused variable under release build</span></div>
|
|
4382
|
+
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  assert(matched && <span class="stringliteral">"incomingInst's Function incorrect"</span>);</div>
|
|
4383
|
+
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* predInst = &inst.getIncomingBlock(i)->back();</div>
|
|
4384
|
+
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(predInst);</div>
|
|
4385
|
+
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfPrevInst);</div>
|
|
4386
|
+
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(val);</div>
|
|
4387
|
+
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2bd394d9fe3b7a10080987b7a707f5c0">addPhiStmt</a>(dst,src,icfgNode);</div>
|
|
4388
|
+
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  }</div>
|
|
4389
|
+
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span> }</div>
|
|
4394
4390
|
</div><!-- fragment -->
|
|
4395
4391
|
</div>
|
|
4396
4392
|
</div>
|
|
@@ -4443,26 +4439,26 @@ Private Attributes</h2></td></tr>
|
|
|
4443
4439
|
</div><div class="memdoc">
|
|
4444
4440
|
<p>Visit return instructions of a function </p>
|
|
4445
4441
|
|
|
4446
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
4447
|
-
<div class="fragment"><div class="line"><a name="
|
|
4448
|
-
<div class="line"><a name="
|
|
4449
|
-
<div class="line"><a name="
|
|
4450
|
-
<div class="line"><a name="
|
|
4451
|
-
<div class="line"><a name="
|
|
4452
|
-
<div class="line"><a name="
|
|
4442
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00871">871</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
4443
|
+
<div class="fragment"><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> {</div>
|
|
4444
|
+
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  </div>
|
|
4445
|
+
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="comment">// ReturnInst itself should always not be a pointer type</span></div>
|
|
4446
|
+
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  assert(!SVFUtil::isa<PointerType>(inst.getType()));</div>
|
|
4447
|
+
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  </div>
|
|
4448
|
+
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process return "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(&inst)->toString() << <span class="stringliteral">" \n"</span>);</div>
|
|
4449
|
+
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  </div>
|
|
4450
|
+
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* src = inst.getReturnValue())</div>
|
|
4451
|
+
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  {</div>
|
|
4452
|
+
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(inst.getParent()->getParent());</div>
|
|
4453
4453
|
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  </div>
|
|
4454
|
-
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span> 
|
|
4455
|
-
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span> 
|
|
4456
|
-
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <span class="keyword">const</span> <a class="code" href="
|
|
4457
|
-
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  </div>
|
|
4458
|
-
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <
|
|
4459
|
-
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <a class="code" href="
|
|
4460
|
-
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span> 
|
|
4461
|
-
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span> 
|
|
4462
|
-
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="comment">//vnS may be null if src is a null ptr</span></div>
|
|
4463
|
-
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2bd394d9fe3b7a10080987b7a707f5c0">addPhiStmt</a>(rnF,vnS,icfgNode);</div>
|
|
4464
|
-
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  }</div>
|
|
4465
|
-
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span> }</div>
|
|
4454
|
+
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rnF = <a class="code" href="classSVF_1_1SVFIRBuilder.html#aff99c8de4acf4eeaf01803dadf459b92">getReturnNode</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
|
|
4455
|
+
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(src);</div>
|
|
4456
|
+
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(&inst);</div>
|
|
4457
|
+
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfInst);</div>
|
|
4458
|
+
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <span class="comment">//vnS may be null if src is a null ptr</span></div>
|
|
4459
|
+
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a2bd394d9fe3b7a10080987b7a707f5c0">addPhiStmt</a>(rnF,vnS,icfgNode);</div>
|
|
4460
|
+
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  }</div>
|
|
4461
|
+
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span> }</div>
|
|
4466
4462
|
</div><!-- fragment -->
|
|
4467
4463
|
</div>
|
|
4468
4464
|
</div>
|
|
@@ -4484,17 +4480,17 @@ Private Attributes</h2></td></tr>
|
|
|
4484
4480
|
<p>Visit select instructions </p>
|
|
4485
4481
|
<p>Two operands have same incoming basic block, both are the current BB</p>
|
|
4486
4482
|
|
|
4487
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
4488
|
-
<div class="fragment"><div class="line"><a name="
|
|
4489
|
-
<div class="line"><a name="
|
|
4490
|
-
<div class="line"><a name="
|
|
4491
|
-
<div class="line"><a name="
|
|
4492
|
-
<div class="line"><a name="
|
|
4493
|
-
<div class="line"><a name="
|
|
4494
|
-
<div class="line"><a name="
|
|
4495
|
-
<div class="line"><a name="
|
|
4496
|
-
<div class="line"><a name="
|
|
4497
|
-
<div class="line"><a name="
|
|
4483
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00793">793</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
4484
|
+
<div class="fragment"><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> {</div>
|
|
4485
|
+
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  </div>
|
|
4486
|
+
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process select "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(&inst)->toString() << <span class="stringliteral">" \n"</span>);</div>
|
|
4487
|
+
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  </div>
|
|
4488
|
+
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
4489
|
+
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src1 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getTrueValue());</div>
|
|
4490
|
+
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src2 = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getFalseValue());</div>
|
|
4491
|
+
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getCondition());</div>
|
|
4492
|
+
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5bf90e30bb591caba9ff85535e6a33f8">addSelectStmt</a>(dst,src1,src2, cond);</div>
|
|
4493
|
+
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span> }</div>
|
|
4498
4494
|
</div><!-- fragment -->
|
|
4499
4495
|
</div>
|
|
4500
4496
|
</div>
|
|
@@ -4546,20 +4542,20 @@ Private Attributes</h2></td></tr>
|
|
|
4546
4542
|
</div><div class="memdoc">
|
|
4547
4543
|
<p>Visit store instructions </p>
|
|
4548
4544
|
|
|
4549
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
4550
|
-
<div class="fragment"><div class="line"><a name="
|
|
4551
|
-
<div class="line"><a name="
|
|
4552
|
-
<div class="line"><a name="
|
|
4553
|
-
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  </div>
|
|
4554
|
-
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process store "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(&inst)->toString() << <span class="stringliteral">" \n"</span>);</div>
|
|
4555
|
-
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  </div>
|
|
4556
|
-
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getPointerOperand());</div>
|
|
4557
|
-
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  </div>
|
|
4558
|
-
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getValueOperand());</div>
|
|
4545
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00691">691</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
4546
|
+
<div class="fragment"><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> {</div>
|
|
4547
|
+
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="comment">// StoreInst itself should always not be a pointer type</span></div>
|
|
4548
|
+
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  assert(!SVFUtil::isa<PointerType>(inst.getType()));</div>
|
|
4559
4549
|
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  </div>
|
|
4560
|
-
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <a class="code" href="
|
|
4550
|
+
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"process store "</span> << <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(&inst)->toString() << <span class="stringliteral">" \n"</span>);</div>
|
|
4561
4551
|
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  </div>
|
|
4562
|
-
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span> 
|
|
4552
|
+
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getPointerOperand());</div>
|
|
4553
|
+
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  </div>
|
|
4554
|
+
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getValueOperand());</div>
|
|
4555
|
+
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  </div>
|
|
4556
|
+
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">addStoreEdge</a>(src, dst);</div>
|
|
4557
|
+
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  </div>
|
|
4558
|
+
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span> }</div>
|
|
4563
4559
|
</div><!-- fragment -->
|
|
4564
4560
|
</div>
|
|
4565
4561
|
</div>
|
|
@@ -4579,27 +4575,27 @@ Private Attributes</h2></td></tr>
|
|
|
4579
4575
|
</table>
|
|
4580
4576
|
</div><div class="memdoc">
|
|
4581
4577
|
|
|
4582
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
4583
|
-
<div class="fragment"><div class="line"><a name="
|
|
4584
|
-
<div class="line"><a name="
|
|
4585
|
-
<div class="line"><a name="
|
|
4586
|
-
<div class="line"><a name="
|
|
4587
|
-
<div class="line"><a name="
|
|
4588
|
-
<div class="line"><a name="
|
|
4589
|
-
<div class="line"><a name="
|
|
4590
|
-
<div class="line"><a name="
|
|
4591
|
-
<div class="line"><a name="
|
|
4592
|
-
<div class="line"><a name="
|
|
4593
|
-
<div class="line"><a name="
|
|
4594
|
-
<div class="line"><a name="
|
|
4595
|
-
<div class="line"><a name="
|
|
4596
|
-
<div class="line"><a name="
|
|
4597
|
-
<div class="line"><a name="
|
|
4598
|
-
<div class="line"><a name="
|
|
4599
|
-
<div class="line"><a name="
|
|
4600
|
-
<div class="line"><a name="
|
|
4601
|
-
<div class="line"><a name="
|
|
4602
|
-
<div class="line"><a name="
|
|
4578
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00947">947</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
4579
|
+
<div class="fragment"><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> {</div>
|
|
4580
|
+
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> brinst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
4581
|
+
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(inst.getCondition());</div>
|
|
4582
|
+
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  </div>
|
|
4583
|
+
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <a class="code" href="classSVF_1_1BranchStmt.html#a6a0e64824777f04be4c169125dd4f666">BranchStmt::SuccAndCondPairVec</a> successors;</div>
|
|
4584
|
+
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  </div>
|
|
4585
|
+
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="comment">// get case successor basic block and related case value</span></div>
|
|
4586
|
+
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <a class="code" href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SuccBBAndCondValPairVec</a> succBB2CondValPairVec;</div>
|
|
4587
|
+
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">LLVMUtil::getSuccBBandCondValPairVec</a>(inst, succBB2CondValPairVec);</div>
|
|
4588
|
+
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> &succBB2CaseValue : succBB2CondValPairVec)</div>
|
|
4589
|
+
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  {</div>
|
|
4590
|
+
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">LLVMUtil::getCaseValue</a>(inst, succBB2CaseValue);</div>
|
|
4591
|
+
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succBB = succBB2CaseValue.first;</div>
|
|
4592
|
+
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* succInst = &succBB->front();</div>
|
|
4593
|
+
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfSuccInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(succInst);</div>
|
|
4594
|
+
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = <a class="code" href="classSVF_1_1SVFIRBuilder.html#a4ea94b0a8d6da904ff9a6c1b0341b9cb">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(svfSuccInst);</div>
|
|
4595
|
+
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  successors.push_back(std::make_pair(icfgNode, val));</div>
|
|
4596
|
+
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  }</div>
|
|
4597
|
+
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a5e56beb1a362b6e596183b04d37fd9e0">addBranchStmt</a>(brinst, cond, successors);</div>
|
|
4598
|
+
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span> }</div>
|
|
4603
4599
|
</div><!-- fragment -->
|
|
4604
4600
|
</div>
|
|
4605
4601
|
</div>
|
|
@@ -4620,15 +4616,15 @@ Private Attributes</h2></td></tr>
|
|
|
4620
4616
|
</div><div class="memdoc">
|
|
4621
4617
|
<p>Visit Unary Operator </p>
|
|
4622
4618
|
|
|
4623
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
4624
|
-
<div class="fragment"><div class="line"><a name="
|
|
4625
|
-
<div class="line"><a name="
|
|
4626
|
-
<div class="line"><a name="
|
|
4627
|
-
<div class="line"><a name="
|
|
4628
|
-
<div class="line"><a name="
|
|
4629
|
-
<div class="line"><a name="
|
|
4630
|
-
<div class="line"><a name="
|
|
4631
|
-
<div class="line"><a name="
|
|
4619
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00764">764</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
4620
|
+
<div class="fragment"><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> {</div>
|
|
4621
|
+
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
4622
|
+
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  assert(inst.getNumOperands() == 1 && <span class="stringliteral">"not one operand for Unary instruction?"</span>);</div>
|
|
4623
|
+
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getOperand(0);</div>
|
|
4624
|
+
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
|
|
4625
|
+
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> opcode = inst.getOpcode();</div>
|
|
4626
|
+
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a9e81039d17b70e6a3d7310d05fa73c45">addUnaryOPEdge</a>(src, dst, opcode);</div>
|
|
4627
|
+
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span> }</div>
|
|
4632
4628
|
</div><!-- fragment -->
|
|
4633
4629
|
</div>
|
|
4634
4630
|
</div>
|
|
@@ -4680,13 +4676,13 @@ Private Attributes</h2></td></tr>
|
|
|
4680
4676
|
<p>TODO: var arguments need to be handled. <a href="https://llvm.org/docs/LangRef.html#id1911">https://llvm.org/docs/LangRef.html#id1911</a></p>
|
|
4681
4677
|
<p>ap = alloca struct.va_list ap2 = bitcast struct.va_list* ap to i8* ; Read a single integer argument from ap2 tmp = va_arg i8* ap2, i32 (VAArgInst) TODO: for now, create a copy edge from ap2 to tmp, we assume here tmp should point to the n-th argument of the var_args </p>
|
|
4682
4678
|
|
|
4683
|
-
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#
|
|
4684
|
-
<div class="fragment"><div class="line"><a name="
|
|
4685
|
-
<div class="line"><a name="
|
|
4686
|
-
<div class="line"><a name="
|
|
4687
|
-
<div class="line"><a name="
|
|
4688
|
-
<div class="line"><a name="
|
|
4689
|
-
<div class="line"><a name="
|
|
4679
|
+
<p class="definition">Definition at line <a class="el" href="SVFIRBuilder_8cpp_source.html#l00974">974</a> of file <a class="el" href="SVFIRBuilder_8cpp_source.html">SVFIRBuilder.cpp</a>.</p>
|
|
4680
|
+
<div class="fragment"><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> {</div>
|
|
4681
|
+
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(&inst);</div>
|
|
4682
|
+
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = inst.getPointerOperand();</div>
|
|
4683
|
+
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = <a class="code" href="classSVF_1_1SVFIRBuilder.html#acc69fc638380f34164db649d9bf2a7d6">getValueNode</a>(opnd);</div>
|
|
4684
|
+
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html#a29d377d01267c364ce1badd4c0f2e98f">addCopyEdge</a>(src, dst, <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a3fbb25d7761cca1dd44e06e41e5570c9">CopyStmt::COPYVAL</a>);</div>
|
|
4685
|
+
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span> }</div>
|
|
4690
4686
|
</div><!-- fragment -->
|
|
4691
4687
|
</div>
|
|
4692
4688
|
</div>
|
|
@@ -4890,10 +4886,10 @@ Private Attributes</h2></td></tr>
|
|
|
4890
4886
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_ae61030da4a84b5c9c47903804af9d107"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae61030da4a84b5c9c47903804af9d107">SVF::SVFIR::addBranchStmt</a></div><div class="ttdeci">BranchStmt * addBranchStmt(NodeID br, NodeID cond, const BranchStmt::SuccAndCondPairVec &succs)</div><div class="ttdoc">Add BranchStmt.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00186">SVFIR.cpp:186</a></div></div>
|
|
4891
4887
|
<div class="ttc" id="aclassSVF_1_1SVFCallInst_html_a3cbb4b4089c8b27d01da15f2d2f22e14"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#a3cbb4b4089c8b27d01da15f2d2f22e14">SVF::SVFCallInst::getArgOperand</a></div><div class="ttdeci">const SVFValue * getArgOperand(u32_t i) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00746">SVFValue.h:746</a></div></div>
|
|
4892
4888
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a2401b022638769f59f86ab424a189b6e"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string & getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00243">SVFValue.h:243</a></div></div>
|
|
4893
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_ae4516ec05eabece1bc8e0cad1ec8cf1c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ae4516ec05eabece1bc8e0cad1ec8cf1c">SVF::SVFIRBuilder::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const Value *val, const AccessPath &ap, const SVFType *elementType)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
4889
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_ae4516ec05eabece1bc8e0cad1ec8cf1c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ae4516ec05eabece1bc8e0cad1ec8cf1c">SVF::SVFIRBuilder::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const Value *val, const AccessPath &ap, const SVFType *elementType)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01159">SVFIRBuilder.cpp:1159</a></div></div>
|
|
4894
4890
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_af4b18e8e1fdfb117cb5dd1a81cea4b71"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#af4b18e8e1fdfb117cb5dd1a81cea4b71">SVF::SVFIRBuilder::initialiseNodes</a></div><div class="ttdeci">void initialiseNodes()</div><div class="ttdoc">Initialize nodes and edges.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00181">SVFIRBuilder.cpp:181</a></div></div>
|
|
4895
4891
|
<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#l00278">LLVMUtil.cpp:278</a></div></div>
|
|
4896
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a4c6cd51def26ebd8e839df9fdc4b64b8"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4c6cd51def26ebd8e839df9fdc4b64b8">SVF::SVFIRBuilder::visitGlobal</a></div><div class="ttdeci">void visitGlobal(SVFModule *svfModule)</div><div class="ttdoc">Handle globals including (global variable and functions)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
4892
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a4c6cd51def26ebd8e839df9fdc4b64b8"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4c6cd51def26ebd8e839df9fdc4b64b8">SVF::SVFIRBuilder::visitGlobal</a></div><div class="ttdeci">void visitGlobal(SVFModule *svfModule)</div><div class="ttdoc">Handle globals including (global variable and functions)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00580">SVFIRBuilder.cpp:580</a></div></div>
|
|
4897
4893
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5e56beb1a362b6e596183b04d37fd9e0"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5e56beb1a362b6e596183b04d37fd9e0">SVF::SVFIRBuilder::addBranchStmt</a></div><div class="ttdeci">void addBranchStmt(NodeID br, NodeID cond, const BranchStmt::SuccAndCondPairVec &succs)</div><div class="ttdoc">Add Branch statement.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00439">SVFIRBuilder.h:439</a></div></div>
|
|
4898
4894
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a7bde256bc906af7f7204929019f4a33e"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a7bde256bc906af7f7204929019f4a33e">SVF::SVFBasicBlock::front</a></div><div class="ttdeci">const SVFInstruction * front() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00598">SVFValue.h:598</a></div></div>
|
|
4899
4895
|
<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#l00186">BasicTypes.h:186</a></div></div>
|
|
@@ -4902,14 +4898,14 @@ Private Attributes</h2></td></tr>
|
|
|
4902
4898
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00105">LLVMModule.h:105</a></div></div>
|
|
4903
4899
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a8bf1847f31ff90937ce76cd0c0af7edb"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a8bf1847f31ff90937ce76cd0c0af7edb">SVF::SVFIRBuilder::addBlackHoleAddrEdge</a></div><div class="ttdeci">void addBlackHoleAddrEdge(NodeID node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00285">SVFIRBuilder.h:285</a></div></div>
|
|
4904
4900
|
<div class="ttc" id="aclassSVF_1_1IRGraph_html_a96010999a4e5013beb1c37ef753ff910"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a96010999a4e5013beb1c37ef753ff910">SVF::IRGraph::getReturnNode</a></div><div class="ttdeci">NodeID getReturnNode(const SVFFunction *func) const</div><div class="ttdoc">GetReturnNode - Return the unique node representing the return value of a function.</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00152">IRGraph.h:152</a></div></div>
|
|
4905
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a09baa8c7246853c3faaed85b38f0da60"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a09baa8c7246853c3faaed85b38f0da60">SVF::SVFIRBuilder::sanityCheck</a></div><div class="ttdeci">void sanityCheck()</div><div class="ttdoc">Sanity check for SVFIR.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
4906
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a69963e4030433103e84e57fc015871d8"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a69963e4030433103e84e57fc015871d8">SVF::SVFIR::addCallSiteArgs</a></div><div class="ttdeci">void addCallSiteArgs(CallICFGNode *callBlockNode, const SVFVar *arg)</div><div class="ttdoc">Add callsite arguments.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
4901
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a09baa8c7246853c3faaed85b38f0da60"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a09baa8c7246853c3faaed85b38f0da60">SVF::SVFIRBuilder::sanityCheck</a></div><div class="ttdeci">void sanityCheck()</div><div class="ttdoc">Sanity check for SVFIR.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01133">SVFIRBuilder.cpp:1133</a></div></div>
|
|
4902
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a69963e4030433103e84e57fc015871d8"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a69963e4030433103e84e57fc015871d8">SVF::SVFIR::addCallSiteArgs</a></div><div class="ttdeci">void addCallSiteArgs(CallICFGNode *callBlockNode, const SVFVar *arg)</div><div class="ttdoc">Add callsite arguments.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00511">SVFIR.h:511</a></div></div>
|
|
4907
4903
|
<div class="ttc" id="aCommandLine_8h_html_a2429346d37bd4c40889bd7c6d319d9da"><div class="ttname"><a href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="CommandLine_8h_source.html#l00018">CommandLine.h:18</a></div></div>
|
|
4908
4904
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a688bd5e1bf36b3e75bfcea9388871dc4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a688bd5e1bf36b3e75bfcea9388871dc4">SVF::SVFUtil::isMemcpyExtFun</a></div><div class="ttdeci">bool isMemcpyExtFun(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00314">SVFUtil.h:314</a></div></div>
|
|
4909
4905
|
<div class="ttc" id="aclassSVF_1_1SVFCallInst_html"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html">SVF::SVFCallInst</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00699">SVFValue.h:699</a></div></div>
|
|
4910
4906
|
<div class="ttc" id="aclassSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00044">ICFGEdge.h:44</a></div></div>
|
|
4911
4907
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a33df5f5d9b7de3846cf973135b04f513"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a33df5f5d9b7de3846cf973135b04f513">SVF::SVFIR::addBlackHoleAddrStmt</a></div><div class="ttdeci">SVFStmt * addBlackHoleAddrStmt(NodeID node)</div><div class="ttdoc">Set a pointer points-to black hole (e.g. int2ptr)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00277">SVFIR.cpp:277</a></div></div>
|
|
4912
|
-
<div class="ttc" id="aclassSVF_1_1GepStmt_html_a0ddf180a0f7ba64fc8655687910e3788"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">SVF::GepStmt::isVariantFieldGep</a></div><div class="ttdeci">bool isVariantFieldGep() const</div><div class="ttdoc">Gep statement with a variant field index (pointer arithmetic) for struct field access.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
4908
|
+
<div class="ttc" id="aclassSVF_1_1GepStmt_html_a0ddf180a0f7ba64fc8655687910e3788"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">SVF::GepStmt::isVariantFieldGep</a></div><div class="ttdeci">bool isVariantFieldGep() const</div><div class="ttdoc">Gep statement with a variant field index (pointer arithmetic) for struct field access.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00591">SVFStatements.h:591</a></div></div>
|
|
4913
4909
|
<div class="ttc" id="aclassSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00384">GenericGraph.h:384</a></div></div>
|
|
4914
4910
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_af6a2c401d5c7582a4a958b1fe40838e5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">SVF::SVFIR::initialiseCandidatePointers</a></div><div class="ttdeci">void initialiseCandidatePointers()</div><div class="ttdoc">Initialize candidate pointers.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00637">SVFIR.cpp:637</a></div></div>
|
|
4915
4911
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a35b36394af726c679fe2c1b6051db7c4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a35b36394af726c679fe2c1b6051db7c4">SVF::LLVMUtil::isBinaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isBinaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00259">LLVMUtil.h:259</a></div></div>
|
|
@@ -4922,7 +4918,7 @@ Private Attributes</h2></td></tr>
|
|
|
4922
4918
|
<div class="ttc" id="aclassSVF_1_1IRGraph_html_a43514023a4f4d0c32f536f51443b0efc"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const SVFValue *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00137">IRGraph.h:137</a></div></div>
|
|
4923
4919
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a28fbb7cc51eb7e25d88f43e3eb1f30fb"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28fbb7cc51eb7e25d88f43e3eb1f30fb">SVF::SVFUtil::isHareParForCall</a></div><div class="ttdeci">bool isHareParForCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00503">SVFUtil.h:503</a></div></div>
|
|
4924
4920
|
<div class="ttc" id="aclassSVF_1_1CallICFGNode_html_a90fd0b8e44fba1a7eb76d15bce085d66"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">SVF::CallICFGNode::getCallSite</a></div><div class="ttdeci">const SVFInstruction * getCallSite() const</div><div class="ttdoc">Return callsite.</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00409">ICFGNode.h:409</a></div></div>
|
|
4925
|
-
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1ae746463dbec33f7d026b1a43e9ea4b87"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ae746463dbec33f7d026b1a43e9ea4b87">SVF::CopyStmt::PTRTOINT</a></div><div class="ttdeci">@ PTRTOINT</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
4921
|
+
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1ae746463dbec33f7d026b1a43e9ea4b87"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ae746463dbec33f7d026b1a43e9ea4b87">SVF::CopyStmt::PTRTOINT</a></div><div class="ttdeci">@ PTRTOINT</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00387">SVFStatements.h:387</a></div></div>
|
|
4926
4922
|
<div class="ttc" id="anamespaceSVF_html_a893c345ff98bb2808ae905cf9f3671c5"><div class="ttname"><a href="namespaceSVF.html#a893c345ff98bb2808ae905cf9f3671c5">SVF::GEPOperator</a></div><div class="ttdeci">llvm::GEPOperator GEPOperator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00182">BasicTypes.h:182</a></div></div>
|
|
4927
4923
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_ab37f85962943d8fd68bd972212b6364f"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ab37f85962943d8fd68bd972212b6364f">SVF::SVFIRBuilder::addAddrWithHeapSz</a></div><div class="ttdeci">AddrStmt * addAddrWithHeapSz(NodeID src, NodeID dst, const CallBase *cs)</div><div class="ttdoc">Add Address edge from ext call with args like "%5 = call i8* @malloc(i64 noundef 5)".</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00315">SVFIRBuilder.h:315</a></div></div>
|
|
4928
4924
|
<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#l00086">BasicTypes.h:86</a></div></div>
|
|
@@ -4930,7 +4926,7 @@ Private Attributes</h2></td></tr>
|
|
|
4930
4926
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_abaf03c3031ef3940c73e3cd8e8ca17b6"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abaf03c3031ef3940c73e3cd8e8ca17b6">SVF::SVFIRBuilder::addCallEdge</a></div><div class="ttdeci">void addCallEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Call edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00462">SVFIRBuilder.h:462</a></div></div>
|
|
4931
4927
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_aafd4da7cef6387bb974abe20185b7b96"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aafd4da7cef6387bb974abe20185b7b96">SVF::SymbolTableInfo::retSyms</a></div><div class="ttdeci">FunToIDMapTy & retSyms()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00280">SymbolTableInfo.h:280</a></div></div>
|
|
4932
4928
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad56c48be3ba6ebb95416623256524097"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad56c48be3ba6ebb95416623256524097">SVF::LLVMUtil::getCallee</a></div><div class="ttdeci">const Function * getCallee(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00065">LLVMUtil.h:65</a></div></div>
|
|
4933
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5aa87f9ea35b30b4b4797f8a7f9f293c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5aa87f9ea35b30b4b4797f8a7f9f293c">SVF::SVFIRBuilder::visitCallSite</a></div><div class="ttdeci">void visitCallSite(CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
4929
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5aa87f9ea35b30b4b4797f8a7f9f293c"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5aa87f9ea35b30b4b4797f8a7f9f293c">SVF::SVFIRBuilder::visitCallSite</a></div><div class="ttdeci">void visitCallSite(CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00824">SVFIRBuilder.cpp:824</a></div></div>
|
|
4934
4930
|
<div class="ttc" id="aclassSVF_1_1IRGraph_html_a0a18bca50f7cd3a1882754f19303d257"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a0a18bca50f7cd3a1882754f19303d257">SVF::IRGraph::getNodeNumAfterPAGBuild</a></div><div class="ttdeci">u32_t getNodeNumAfterPAGBuild() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00194">IRGraph.h:194</a></div></div>
|
|
4935
4931
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_aff99c8de4acf4eeaf01803dadf459b92"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aff99c8de4acf4eeaf01803dadf459b92">SVF::SVFIRBuilder::getReturnNode</a></div><div class="ttdeci">NodeID getReturnNode(const SVFFunction *func)</div><div class="ttdoc">getReturnNode - Return the node representing the unique return value of a function.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00105">SVFIRBuilder.h:105</a></div></div>
|
|
4936
4932
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a090378de3e320d9589d7847c0a6b1936"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a090378de3e320d9589d7847c0a6b1936">SVF::SVFIRBuilder::getCopyKind</a></div><div class="ttdeci">CopyStmt::CopyKind getCopyKind(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00371">SVFIRBuilder.h:371</a></div></div>
|
|
@@ -4946,7 +4942,7 @@ Private Attributes</h2></td></tr>
|
|
|
4946
4942
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a916d893cb852bbbd933e3e5349d5154b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a916d893cb852bbbd933e3e5349d5154b">SVF::SVFIR::addThreadForkPE</a></div><div class="ttdeci">TDForkPE * addThreadForkPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Thread fork edge for parameter passing.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00288">SVFIR.cpp:288</a></div></div>
|
|
4947
4943
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a8f3cb8a1db34dd692ee04561f4edeebf"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a8f3cb8a1db34dd692ee04561f4edeebf">SVF::SymbolTableInfo::valSyms</a></div><div class="ttdeci">ValueToIDMapTy & valSyms()</div><div class="ttdoc">Get different kinds of syms maps.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00260">SymbolTableInfo.h:260</a></div></div>
|
|
4948
4944
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a6ca1b9d5bb267806f8aaae5a94ed36cc"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a6ca1b9d5bb267806f8aaae5a94ed36cc">SVF::SVFIRBuilder::svfModule</a></div><div class="ttdeci">SVFModule * svfModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00051">SVFIRBuilder.h:51</a></div></div>
|
|
4949
|
-
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a77433e71effbacec14da8f658523fb3e"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a77433e71effbacec14da8f658523fb3e">SVF::CopyStmt::BITCAST</a></div><div class="ttdeci">@ BITCAST</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
4945
|
+
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a77433e71effbacec14da8f658523fb3e"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a77433e71effbacec14da8f658523fb3e">SVF::CopyStmt::BITCAST</a></div><div class="ttdeci">@ BITCAST</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00379">SVFStatements.h:379</a></div></div>
|
|
4950
4946
|
<div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html">SVF::LLVMLoopAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8h_source.html#l00039">LLVMLoopAnalysis.h:39</a></div></div>
|
|
4951
4947
|
<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#l01373">LLVMModule.cpp:1373</a></div></div>
|
|
4952
4948
|
<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#l00852">LLVMUtil.cpp:852</a></div></div>
|
|
@@ -4955,8 +4951,8 @@ Private Attributes</h2></td></tr>
|
|
|
4955
4951
|
<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#l00082">BasicTypes.h:82</a></div></div>
|
|
4956
4952
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a3abcab8c3155c5c5d4a04f05ea207260"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3abcab8c3155c5c5d4a04f05ea207260">SVF::SVFIR::addNormalGepStmt</a></div><div class="ttdeci">GepStmt * addNormalGepStmt(NodeID src, NodeID dst, const AccessPath &ap)</div><div class="ttdoc">Add Offset(Gep) edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00346">SVFIR.cpp:346</a></div></div>
|
|
4957
4953
|
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a2358a8194b5e2c4bcbb5218dee7fcbcd"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a2358a8194b5e2c4bcbb5218dee7fcbcd">SVF::AccessPath::addOffsetVarAndGepTypePair</a></div><div class="ttdeci">bool addOffsetVarAndGepTypePair(const SVFVar *var, const SVFType *gepIterType)</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00042">AccessPath.cpp:42</a></div></div>
|
|
4958
|
-
<div class="ttc" id="aclassSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
4959
|
-
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1ab55ad5d331f6e4a69f8e2f0d95e5d3a1"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ab55ad5d331f6e4a69f8e2f0d95e5d3a1">SVF::CopyStmt::SEXT</a></div><div class="ttdeci">@ SEXT</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
4954
|
+
<div class="ttc" id="aclassSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00670">SVFStatements.h:670</a></div></div>
|
|
4955
|
+
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1ab55ad5d331f6e4a69f8e2f0d95e5d3a1"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ab55ad5d331f6e4a69f8e2f0d95e5d3a1">SVF::CopyStmt::SEXT</a></div><div class="ttdeci">@ SEXT</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00378">SVFStatements.h:378</a></div></div>
|
|
4960
4956
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ac71522e8c55f84cfc6c13a0ddff18436"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ac71522e8c55f84cfc6c13a0ddff18436">SVF::SVFUtil::wrnMsg</a></div><div class="ttdeci">std::string wrnMsg(const std::string &msg)</div><div class="ttdoc">Returns warning message by converting a string into yellow string output.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00061">SVFUtil.cpp:61</a></div></div>
|
|
4961
4957
|
<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>
|
|
4962
4958
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a11f2d9b6e969ede6fca2c204cc15b821"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">SVF::SVFValue::getType</a></div><div class="ttdeci">virtual const SVFType * getType() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00256">SVFValue.h:256</a></div></div>
|
|
@@ -4979,12 +4975,12 @@ Private Attributes</h2></td></tr>
|
|
|
4979
4975
|
<div class="ttc" id="aclassSVF_1_1ICFG_html_aa41516cdd2be5066adf22798a4fe2213"><div class="ttname"><a href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00237">ICFG.cpp:237</a></div></div>
|
|
4980
4976
|
<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#l00868">LLVMUtil.cpp:868</a></div></div>
|
|
4981
4977
|
<div class="ttc" id="anamespacellvm_html_a7cfc92a12082d69711c97bb3d1b99c48"><div class="ttname"><a href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">llvm::bridge_gep_end</a></div><div class="ttdeci">bridge_gep_iterator bridge_gep_end(const User *GEP)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00157">GEPTypeBridgeIterator.h:157</a></div></div>
|
|
4982
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a2b1de62f88588b068d4eed125049ed8d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2b1de62f88588b068d4eed125049ed8d">SVF::SVFIR::addBlackholePtrNode</a></div><div class="ttdeci">NodeID addBlackholePtrNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
4978
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a2b1de62f88588b068d4eed125049ed8d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2b1de62f88588b068d4eed125049ed8d">SVF::SVFIR::addBlackholePtrNode</a></div><div class="ttdeci">NodeID addBlackholePtrNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00594">SVFIR.h:594</a></div></div>
|
|
4983
4979
|
<div class="ttc" id="aclassSVF_1_1AccessPath_html_a5427d08c9eb9d86e66c2bff6aeba6bac"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">SVF::AccessPath::getConstantStructFldIdx</a></div><div class="ttdeci">APOffset getConstantStructFldIdx() const</div><div class="ttdoc">Get methods.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00100">AccessPath.h:100</a></div></div>
|
|
4984
4980
|
<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#l00083">BasicTypes.h:83</a></div></div>
|
|
4985
4981
|
<div class="ttc" id="aclassSVF_1_1ICFG_html_a881fe977f3a6fde223bd786121e35fcf"><div class="ttname"><a href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00250">ICFG.cpp:250</a></div></div>
|
|
4986
|
-
<div class="ttc" id="aclassSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
4987
|
-
<div class="ttc" id="aclassSVF_1_1BranchStmt_html_a6a0e64824777f04be4c169125dd4f666"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a6a0e64824777f04be4c169125dd4f666">SVF::BranchStmt::SuccAndCondPairVec</a></div><div class="ttdeci">std::vector< std::pair< const ICFGNode *, s32_t > > SuccAndCondPairVec</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
4982
|
+
<div class="ttc" id="aclassSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00610">SVFStatements.h:610</a></div></div>
|
|
4983
|
+
<div class="ttc" id="aclassSVF_1_1BranchStmt_html_a6a0e64824777f04be4c169125dd4f666"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a6a0e64824777f04be4c169125dd4f666">SVF::BranchStmt::SuccAndCondPairVec</a></div><div class="ttdeci">std::vector< std::pair< const ICFGNode *, s32_t > > SuccAndCondPairVec</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01165">SVFStatements.h:1165</a></div></div>
|
|
4988
4984
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_adaed6e68c2f53260ed4c4fc38b5c4721"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">SVF::SymbolTableInfo::nullPtrSymID</a></div><div class="ttdeci">SymID nullPtrSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00188">SymbolTableInfo.h:188</a></div></div>
|
|
4989
4985
|
<div class="ttc" id="acJSON_8h_html_a750b5d744c39a06bfb13e6eb010e35d0"><div class="ttname"><a href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a></div><div class="ttdeci">int index</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00170">cJSON.h:170</a></div></div>
|
|
4990
4986
|
<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#l00212">LLVMModule.h:212</a></div></div>
|
|
@@ -4993,13 +4989,13 @@ Private Attributes</h2></td></tr>
|
|
|
4993
4989
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a64d14e7ee334c85b02414d68877faab2"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64d14e7ee334c85b02414d68877faab2">SVF::SVFIR::addThreadJoinPE</a></div><div class="ttdeci">TDJoinPE * addThreadJoinPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Thread join edge for parameter passing.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00306">SVFIR.cpp:306</a></div></div>
|
|
4994
4990
|
<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#l00130">BasicTypes.h:130</a></div></div>
|
|
4995
4991
|
<div class="ttc" id="anamespaceSVF_html_a0fd33072b099f61eaa642e94ed0c03fc"><div class="ttname"><a href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">SVF::GlobalAlias</a></div><div class="ttdeci">llvm::GlobalAlias GlobalAlias</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
|
|
4996
|
-
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1ab364378cef751d1bca631f3bfacd0658"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ab364378cef751d1bca631f3bfacd0658">SVF::CopyStmt::FPTRUNC</a></div><div class="ttdeci">@ FPTRUNC</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
4992
|
+
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1ab364378cef751d1bca631f3bfacd0658"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ab364378cef751d1bca631f3bfacd0658">SVF::CopyStmt::FPTRUNC</a></div><div class="ttdeci">@ FPTRUNC</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00381">SVFStatements.h:381</a></div></div>
|
|
4997
4993
|
<div class="ttc" id="aclassSVF_1_1SVFStat_html_aea75388c973674686d1f2b7498b4095c"><div class="ttname"><a href="classSVF_1_1SVFStat.html#aea75388c973674686d1f2b7498b4095c">SVF::SVFStat::timeOfBuildingSVFIR</a></div><div class="ttdeci">static double timeOfBuildingSVFIR</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00095">SVFStat.h:95</a></div></div>
|
|
4998
4994
|
<div class="ttc" id="aclassSVF_1_1IRGraph_html_a1cb32461439c4dc8d044c2bfadb11307"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a1cb32461439c4dc8d044c2bfadb11307">SVF::IRGraph::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump SVFIR.</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00102">IRGraph.cpp:102</a></div></div>
|
|
4999
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR_html_ac792c1f8b385515a8cc0a0303d40f212"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac792c1f8b385515a8cc0a0303d40f212">SVF::SVFIR::addValNode</a></div><div class="ttdeci">NodeID addValNode(const SVFValue *val, NodeID i)</div><div class="ttdoc">add node into SVFIR</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
5000
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR_html_ae3d9b4acb63a7dbe316e87bad4e3987a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">SVF::SVFIR::addGlobalPAGEdge</a></div><div class="ttdeci">void addGlobalPAGEdge(const SVFStmt *edge)</div><div class="ttdoc">Add global PAGEdges (not in a procedure)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
4995
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_ac792c1f8b385515a8cc0a0303d40f212"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac792c1f8b385515a8cc0a0303d40f212">SVF::SVFIR::addValNode</a></div><div class="ttdeci">NodeID addValNode(const SVFValue *val, NodeID i)</div><div class="ttdoc">add node into SVFIR</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00534">SVFIR.h:534</a></div></div>
|
|
4996
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_ae3d9b4acb63a7dbe316e87bad4e3987a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">SVF::SVFIR::addGlobalPAGEdge</a></div><div class="ttdeci">void addGlobalPAGEdge(const SVFStmt *edge)</div><div class="ttdoc">Add global PAGEdges (not in a procedure)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00628">SVFIR.h:628</a></div></div>
|
|
5001
4997
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a72be51342f633844f59c5a46b7e01583"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a72be51342f633844f59c5a46b7e01583">SVF::SymbolTableInfo::getValSym</a></div><div class="ttdeci">SymID getValSym(const SVFValue *val)</div><div class="ttdoc">Get different kinds of syms.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00522">SymbolTableInfo.cpp:522</a></div></div>
|
|
5002
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a38f6d0c7db935fd4e556761f96f1fa09"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a38f6d0c7db935fd4e556761f96f1fa09">SVF::SVFIR::addRetNode</a></div><div class="ttdeci">NodeID addRetNode(const SVFFunction *val, NodeID i)</div><div class="ttdoc">Add a unique return node for a procedure.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
4998
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a38f6d0c7db935fd4e556761f96f1fa09"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a38f6d0c7db935fd4e556761f96f1fa09">SVF::SVFIR::addRetNode</a></div><div class="ttdeci">NodeID addRetNode(const SVFFunction *val, NodeID i)</div><div class="ttdoc">Add a unique return node for a procedure.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00547">SVFIR.h:547</a></div></div>
|
|
5003
4999
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a24df52313f8093bb651ae9da972cd663"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">SVF::SymbolTableInfo::getFlattenedElemIdx</a></div><div class="ttdeci">u32_t getFlattenedElemIdx(const SVFType *T, u32_t origId)</div><div class="ttdoc">Flattened element idx of an array or struct by considering stride.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00180">SymbolTableInfo.cpp:180</a></div></div>
|
|
5004
5000
|
<div class="ttc" id="aclassSVF_1_1ICFG_html_aaf521832909781894659725300cf4f49"><div class="ttname"><a href="classSVF_1_1ICFG.html#aaf521832909781894659725300cf4f49">SVF::ICFG::getIntraICFGNode</a></div><div class="ttdeci">IntraICFGNode * getIntraICFGNode(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00261">ICFG.cpp:261</a></div></div>
|
|
5005
5001
|
<div class="ttc" id="aclassSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00047">SVFStat.cpp:47</a></div></div>
|
|
@@ -5007,8 +5003,8 @@ Private Attributes</h2></td></tr>
|
|
|
5007
5003
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a4e1b6797df3e7b98da876f50741e6a3a"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4e1b6797df3e7b98da876f50741e6a3a">SVF::SVFIRBuilder::addGepEdge</a></div><div class="ttdeci">void addGepEdge(NodeID src, NodeID dst, const AccessPath &ap, bool constGep)</div><div class="ttdoc">Add Gep edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00474">SVFIRBuilder.h:474</a></div></div>
|
|
5008
5004
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a2f74db48793a0db76c000ffecf9e1bd2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2f74db48793a0db76c000ffecf9e1bd2">SVF::SVFUtil::getTaskDataAtHareParForSite</a></div><div class="ttdeci">const SVFValue * getTaskDataAtHareParForSite(const CallSite cs)</div><div class="ttdoc">Return the task data argument of the parallel_for routine.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00599">SVFUtil.h:599</a></div></div>
|
|
5009
5005
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_adb6db6407bdc9a39e5bf8cd941f0ad15"><div class="ttname"><a href="classSVF_1_1SVFIR.html#adb6db6407bdc9a39e5bf8cd941f0ad15">SVF::SVFIR::getTypeLocSetsMap</a></div><div class="ttdeci">SVFTypeLocSetsPair & getTypeLocSetsMap(NodeID argId)</div><div class="ttdoc">Given an arg NodeId, get its base SVFType* and all its field location sets.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00231">SVFIR.h:231</a></div></div>
|
|
5010
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_af4e2ec8dee9fca167e20b01cc10b56fd"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#af4e2ec8dee9fca167e20b01cc10b56fd">SVF::SVFIRBuilder::getGlobalVarField</a></div><div class="ttdeci">NodeID getGlobalVarField(const GlobalVariable *gvar, u32_t offset, SVFType *tpy)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
5011
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
5006
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_af4e2ec8dee9fca167e20b01cc10b56fd"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#af4e2ec8dee9fca167e20b01cc10b56fd">SVF::SVFIRBuilder::getGlobalVarField</a></div><div class="ttdeci">NodeID getGlobalVarField(const GlobalVariable *gvar, u32_t offset, SVFType *tpy)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00475">SVFIRBuilder.cpp:475</a></div></div>
|
|
5007
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_abc394c99f0905c958a230412134eda01"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#abc394c99f0905c958a230412134eda01">SVF::SVFIRBuilder::setCurrentBBAndValueForPAGEdge</a></div><div class="ttdeci">void setCurrentBBAndValueForPAGEdge(PAGEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01207">SVFIRBuilder.cpp:1207</a></div></div>
|
|
5012
5008
|
<div class="ttc" id="aclassSVF_1_1ICFG_html_af1b2d2839f811a00103df87342dfc919"><div class="ttname"><a href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">SVF::ICFG::getFunExitICFGNode</a></div><div class="ttdeci">FunExitICFGNode * getFunExitICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function exit node.</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00279">ICFG.cpp:279</a></div></div>
|
|
5013
5009
|
<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#l00095">BasicTypes.h:95</a></div></div>
|
|
5014
5010
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_ab582424fdb6d9674c1bd4466cdfbe497"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">SVF::SymbolTableInfo::constantSymID</a></div><div class="ttdeci">SymID constantSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00193">SymbolTableInfo.h:193</a></div></div>
|
|
@@ -5022,16 +5018,16 @@ Private Attributes</h2></td></tr>
|
|
|
5022
5018
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a6c0229120c8c96be35d2e8000b87384f"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a6c0229120c8c96be35d2e8000b87384f">SVF::SVFIRBuilder::getCurrentBB</a></div><div class="ttdeci">const SVFBasicBlock * getCurrentBB() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00255">SVFIRBuilder.h:255</a></div></div>
|
|
5023
5019
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00114">SVFIR.h:114</a></div></div>
|
|
5024
5020
|
<div class="ttc" id="aclassSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set< const SVFFunction * > FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
|
|
5025
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR_html_aff3f3ff198e7511576484dfda7bf051b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aff3f3ff198e7511576484dfda7bf051b">SVF::SVFIR::addConstantObjNode</a></div><div class="ttdeci">NodeID addConstantObjNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
5021
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_aff3f3ff198e7511576484dfda7bf051b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aff3f3ff198e7511576484dfda7bf051b">SVF::SVFIR::addConstantObjNode</a></div><div class="ttdeci">NodeID addConstantObjNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00588">SVFIR.h:588</a></div></div>
|
|
5026
5022
|
<div class="ttc" id="aclassSVF_1_1AccessPath_html"><div class="ttname"><a href="classSVF_1_1AccessPath.html">SVF::AccessPath</a></div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00052">AccessPath.h:52</a></div></div>
|
|
5027
5023
|
<div class="ttc" id="aclassSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator.</div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00026">NodeIDAllocator.cpp:26</a></div></div>
|
|
5028
5024
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a5c2abeb363081381c3dc939ab511e3f0"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5c2abeb363081381c3dc939ab511e3f0">SVF::SVFUtil::isThreadForkCall</a></div><div class="ttdeci">bool isThreadForkCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00491">SVFUtil.h:491</a></div></div>
|
|
5029
5025
|
<div class="ttc" id="aclassSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00385">ICFGNode.h:385</a></div></div>
|
|
5030
5026
|
<div class="ttc" id="aclassSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00156">SVFType.h:156</a></div></div>
|
|
5031
5027
|
<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>
|
|
5032
|
-
<div class="ttc" id="aclassSVF_1_1GepStmt_html_a6c74f234a6b40bc5292bb14874c2e600"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">SVF::GepStmt::getAccessPath</a></div><div class="ttdeci">const AccessPath & getAccessPath() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
5028
|
+
<div class="ttc" id="aclassSVF_1_1GepStmt_html_a6c74f234a6b40bc5292bb14874c2e600"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">SVF::GepStmt::getAccessPath</a></div><div class="ttdeci">const AccessPath & getAccessPath() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00556">SVFStatements.h:556</a></div></div>
|
|
5033
5029
|
<div class="ttc" id="aclassSVF_1_1AccessPath_html_ab95df74c97fba13206df48e00131e15f"><div class="ttname"><a href="classSVF_1_1AccessPath.html#ab95df74c97fba13206df48e00131e15f">SVF::AccessPath::setFldIdx</a></div><div class="ttdeci">void setFldIdx(APOffset idx)</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00104">AccessPath.h:104</a></div></div>
|
|
5034
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR_html_ac27b9eedd489f13175c010a32203abae"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac27b9eedd489f13175c010a32203abae">SVF::SVFIR::addFunArgs</a></div><div class="ttdeci">void addFunArgs(const SVFFunction *fun, const SVFVar *arg)</div><div class="ttdoc">Get/set method for function/callsite arguments and returns.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
5030
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_ac27b9eedd489f13175c010a32203abae"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac27b9eedd489f13175c010a32203abae">SVF::SVFIR::addFunArgs</a></div><div class="ttdeci">void addFunArgs(const SVFFunction *fun, const SVFVar *arg)</div><div class="ttdoc">Get/set method for function/callsite arguments and returns.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00497">SVFIR.h:497</a></div></div>
|
|
5035
5031
|
<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#l00087">BasicTypes.h:87</a></div></div>
|
|
5036
5032
|
<div class="ttc" id="aclassSVF_1_1IRGraph_html_a3b417ee79560fd00f4cf80906044c198"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3b417ee79560fd00f4cf80906044c198">SVF::IRGraph::getBlkPtr</a></div><div class="ttdeci">NodeID getBlkPtr() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00169">IRGraph.h:169</a></div></div>
|
|
5037
5033
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a946a2b51b848c45c6c52f03581ee05b8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a946a2b51b848c45c6c52f03581ee05b8">SVF::LLVMUtil::isTruncConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isTruncConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00234">LLVMUtil.h:234</a></div></div>
|
|
@@ -5042,8 +5038,8 @@ Private Attributes</h2></td></tr>
|
|
|
5042
5038
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afcde3a8e7d5eff76d017bd5c4b84cd1c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afcde3a8e7d5eff76d017bd5c4b84cd1c">SVF::LLVMModuleSet::getTypeInference</a></div><div class="ttdeci">ObjTypeInference * getTypeInference()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00088">LLVMModule.cpp:88</a></div></div>
|
|
5043
5039
|
<div class="ttc" id="aclassSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">SVF::ICFGEdge::RetCF</a></div><div class="ttdeci">@ RetCF</div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00057">ICFGEdge.h:57</a></div></div>
|
|
5044
5040
|
<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#l00297">SVFValue.h:297</a></div></div>
|
|
5045
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR_html_af4a5fd9ecddb1447207335917adccd68"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af4a5fd9ecddb1447207335917adccd68">SVF::SVFIR::addIndirectCallsites</a></div><div class="ttdeci">void addIndirectCallsites(const CallICFGNode *cs, NodeID funPtr)</div><div class="ttdoc">Add indirect callsites.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
5046
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a53774463f34bb8b528b179b72b48fd69"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a53774463f34bb8b528b179b72b48fd69">SVF::SVFIR::addFunRet</a></div><div class="ttdeci">void addFunRet(const SVFFunction *fun, const SVFVar *ret)</div><div class="ttdoc">Add function returns.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
5041
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_af4a5fd9ecddb1447207335917adccd68"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af4a5fd9ecddb1447207335917adccd68">SVF::SVFIR::addIndirectCallsites</a></div><div class="ttdeci">void addIndirectCallsites(const CallICFGNode *cs, NodeID funPtr)</div><div class="ttdoc">Add indirect callsites.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00523">SVFIR.h:523</a></div></div>
|
|
5042
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a53774463f34bb8b528b179b72b48fd69"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a53774463f34bb8b528b179b72b48fd69">SVF::SVFIR::addFunRet</a></div><div class="ttdeci">void addFunRet(const SVFFunction *fun, const SVFVar *ret)</div><div class="ttdoc">Add function returns.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00504">SVFIR.h:504</a></div></div>
|
|
5047
5043
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a5cee46f58bdab3f9b1c698e97290152f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5cee46f58bdab3f9b1c698e97290152f">SVF::SVFUtil::getTaskFuncAtHareParForSite</a></div><div class="ttdeci">const SVFValue * getTaskFuncAtHareParForSite(const CallSite cs)</div><div class="ttdoc">Return the task function of the parallel_for routine.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00587">SVFUtil.h:587</a></div></div>
|
|
5048
5044
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_accbff738e77fd2256d4a6629c48d63f4"><div class="ttname"><a href="classSVF_1_1SVFIR.html#accbff738e77fd2256d4a6629c48d63f4">SVF::SVFIR::addSelectStmt</a></div><div class="ttdeci">SelectStmt * addSelectStmt(NodeID res, NodeID op1, NodeID op2, NodeID cond)</div><div class="ttdoc">Add SelectStmt.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00106">SVFIR.cpp:106</a></div></div>
|
|
5049
5045
|
<div class="ttc" id="aclassSVF_1_1CHGBuilder_html"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html">SVF::CHGBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00036">CHGBuilder.h:36</a></div></div>
|
|
@@ -5053,7 +5049,7 @@ Private Attributes</h2></td></tr>
|
|
|
5053
5049
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a54636413fd3ed7e634ac7428139966a4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a54636413fd3ed7e634ac7428139966a4">SVF::SVFIRBuilder::addThreadForkEdge</a></div><div class="ttdeci">void addThreadForkEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Thread fork edge for parameter passing.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00492">SVFIRBuilder.h:492</a></div></div>
|
|
5054
5050
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae59b0dc7f29dbd2018e819f77465f66e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae59b0dc7f29dbd2018e819f77465f66e">SVF::LLVMUtil::isSelectConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isSelectConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00224">LLVMUtil.h:224</a></div></div>
|
|
5055
5051
|
<div class="ttc" id="aclassSVF_1_1IRGraph_html_ac5da3a0cbe040a45d719b6f6a23aed91"><div class="ttname"><a href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">SVF::IRGraph::getConstantNode</a></div><div class="ttdeci">NodeID getConstantNode() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00165">IRGraph.h:165</a></div></div>
|
|
5056
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a98341496bf470d23384f3d86a58591db"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a98341496bf470d23384f3d86a58591db">SVF::SVFIR::addCallSite</a></div><div class="ttdeci">void addCallSite(const CallICFGNode *call)</div><div class="ttdoc">Add callsites.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
5052
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a98341496bf470d23384f3d86a58591db"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a98341496bf470d23384f3d86a58591db">SVF::SVFIR::addCallSite</a></div><div class="ttdeci">void addCallSite(const CallICFGNode *call)</div><div class="ttdoc">Add callsites.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00633">SVFIR.h:633</a></div></div>
|
|
5057
5053
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a236b4fefd16e9c793c5bd6d576290841"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">SVF::SVFIR::print</a></div><div class="ttdeci">void print()</div><div class="ttdoc">Print SVFIR.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00552">SVFIR.cpp:552</a></div></div>
|
|
5058
5054
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a2a0711cb1fdd3c5c90b07ff107aff1ac"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a2a0711cb1fdd3c5c90b07ff107aff1ac">SVF::SVFIRBuilder::addAddrEdge</a></div><div class="ttdeci">AddrStmt * addAddrEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Address edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00292">SVFIRBuilder.h:292</a></div></div>
|
|
5059
5055
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_a1357c876eccedd58b3abe68875b3a570"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVF::SVFModule::pagReadFromTXT</a></div><div class="ttdeci">static bool pagReadFromTXT()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00098">SVFModule.h:98</a></div></div>
|
|
@@ -5064,7 +5060,7 @@ Private Attributes</h2></td></tr>
|
|
|
5064
5060
|
<div class="ttc" id="aclassSVF_1_1IRGraph_html_a51201a8fce21b56e3f59a31af04c7b76"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a51201a8fce21b56e3f59a31af04c7b76">SVF::IRGraph::mapValueToEdge</a></div><div class="ttdeci">void mapValueToEdge(const SVFValue *V, SVFStmt *edge)</div><div class="ttdoc">Map a value to a set of edges.</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00089">IRGraph.h:89</a></div></div>
|
|
5065
5061
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a4469ae4c52c162d3fbbd559420045243"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a4469ae4c52c162d3fbbd559420045243">SVF::SVFIRBuilder::addLoadEdge</a></div><div class="ttdeci">void addLoadEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00445">SVFIRBuilder.h:445</a></div></div>
|
|
5066
5062
|
<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#l00282">LLVMUtil.h:282</a></div></div>
|
|
5067
|
-
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1ab2b2f7dffed3d446a147fc7a27e66dd8"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ab2b2f7dffed3d446a147fc7a27e66dd8">SVF::CopyStmt::TRUNC</a></div><div class="ttdeci">@ TRUNC</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
5063
|
+
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1ab2b2f7dffed3d446a147fc7a27e66dd8"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ab2b2f7dffed3d446a147fc7a27e66dd8">SVF::CopyStmt::TRUNC</a></div><div class="ttdeci">@ TRUNC</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00380">SVFStatements.h:380</a></div></div>
|
|
5068
5064
|
<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#l00194">LLVMUtil.h:194</a></div></div>
|
|
5069
5065
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a30f043eeca79259d84b97e265110f018"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a30f043eeca79259d84b97e265110f018">SVF::SVFIRBuilder::addStoreEdge</a></div><div class="ttdeci">void addStoreEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00451">SVFIRBuilder.h:451</a></div></div>
|
|
5070
5066
|
<div class="ttc" id="aclassSVF_1_1IRGraph_html_ab1e2f58c350ec14763b4d8a424984d47"><div class="ttname"><a href="classSVF_1_1IRGraph.html#ab1e2f58c350ec14763b4d8a424984d47">SVF::IRGraph::getObjectNode</a></div><div class="ttdeci">NodeID getObjectNode(const SVFValue *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00147">IRGraph.h:147</a></div></div>
|
|
@@ -5073,11 +5069,11 @@ Private Attributes</h2></td></tr>
|
|
|
5073
5069
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a3837804b2622baf7e6991aa993286e9e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3837804b2622baf7e6991aa993286e9e">SVF::SVFIR::addLoadStmt</a></div><div class="ttdeci">LoadStmt * addLoadStmt(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00204">SVFIR.cpp:204</a></div></div>
|
|
5074
5070
|
<div class="ttc" id="aclassSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00406">GenericGraph.h:406</a></div></div>
|
|
5075
5071
|
<div class="ttc" id="aclassSVF_1_1ICFG_html_a86535e50d1feba706b19491d905baef1"><div class="ttname"><a href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">SVF::ICFG::hasInterICFGEdge</a></div><div class="ttdeci">ICFGEdge * hasInterICFGEdge(ICFGNode *src, ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00308">ICFG.cpp:308</a></div></div>
|
|
5076
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a2b532a5db0197c579b512fbcdb4d6220"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2b532a5db0197c579b512fbcdb4d6220">SVF::SVFIR::addBlackholeObjNode</a></div><div class="ttdeci">NodeID addBlackholeObjNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
5072
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a2b532a5db0197c579b512fbcdb4d6220"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2b532a5db0197c579b512fbcdb4d6220">SVF::SVFIR::addBlackholeObjNode</a></div><div class="ttdeci">NodeID addBlackholeObjNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00582">SVFIR.h:582</a></div></div>
|
|
5077
5073
|
<div class="ttc" id="aclassSVF_1_1IRGraph_html_a5fe12445ed0528183775747dec356db0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a5fe12445ed0528183775747dec356db0">SVF::IRGraph::setNodeNumAfterPAGBuild</a></div><div class="ttdeci">void setNodeNumAfterPAGBuild(u32_t num)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00198">IRGraph.h:198</a></div></div>
|
|
5078
5074
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a1791652f578b6ab8aacb4d6e7c7fd05f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1791652f578b6ab8aacb4d6e7c7fd05f">SVF::SVFIR::addRetPE</a></div><div class="ttdeci">RetPE * addRetPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Return edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00259">SVFIR.cpp:259</a></div></div>
|
|
5079
5075
|
<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#l00084">BasicTypes.h:84</a></div></div>
|
|
5080
|
-
<div class="ttc" id="aclassSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
5076
|
+
<div class="ttc" id="aclassSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00526">SVFStatements.h:526</a></div></div>
|
|
5081
5077
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_ac449cd925dc05758c990179c0748e1d5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ac449cd925dc05758c990179c0748e1d5">SVF::SymbolTableInfo::varargSyms</a></div><div class="ttdeci">FunToIDMapTy & varargSyms()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00285">SymbolTableInfo.h:285</a></div></div>
|
|
5082
5078
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00309">SVFUtil.h:309</a></div></div>
|
|
5083
5079
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_af48d08d3adf7dd3ed69d97e4df360059"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">SVF::SVFBasicBlock::getParent</a></div><div class="ttdeci">const SVFFunction * getParent() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00588">SVFValue.h:588</a></div></div>
|
|
@@ -5090,9 +5086,9 @@ Private Attributes</h2></td></tr>
|
|
|
5090
5086
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a9e81039d17b70e6a3d7310d05fa73c45"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a9e81039d17b70e6a3d7310d05fa73c45">SVF::SVFIRBuilder::addUnaryOPEdge</a></div><div class="ttdeci">void addUnaryOPEdge(NodeID src, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Unary edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00433">SVFIRBuilder.h:433</a></div></div>
|
|
5091
5087
|
<div class="ttc" id="anamespaceSVF_html_a8ad3aa124fabddc2fdd07c50403d70a9"><div class="ttname"><a href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">SVF::ConstantDataSequential</a></div><div class="ttdeci">llvm::ConstantDataSequential ConstantDataSequential</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00119">BasicTypes.h:119</a></div></div>
|
|
5092
5088
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a1f77275b24345164f30d519238121f92"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1f77275b24345164f30d519238121f92">SVF::SVFIR::addGepStmt</a></div><div class="ttdeci">GepStmt * addGepStmt(NodeID src, NodeID dst, const AccessPath &ap, bool constGep)</div><div class="ttdoc">Add Gep edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00327">SVFIR.cpp:327</a></div></div>
|
|
5093
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a892ab8cad098e9e9d8425e7f05e35c59"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a892ab8cad098e9e9d8425e7f05e35c59">SVF::SVFIRBuilder::getBaseValueForExtArg</a></div><div class="ttdeci">const Value * getBaseValueForExtArg(const Value *V)</div><div class="ttdoc">Get the base value of (i8* src and i8* dst) for external argument (e.g. memcpy(i8* dst,...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
5094
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5ae68d4465feb54fcb8fd0cf20b7a71a"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5ae68d4465feb54fcb8fd0cf20b7a71a">SVF::SVFIRBuilder::handleIndCall</a></div><div class="ttdeci">void handleIndCall(CallBase *cs)</div><div class="ttdoc">Handle indirect call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
5095
|
-
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a821cd6daeaee15b117b41a272f743ff1"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a821cd6daeaee15b117b41a272f743ff1">SVF::CopyStmt::UITOFP</a></div><div class="ttdeci">@ UITOFP</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
5089
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a892ab8cad098e9e9d8425e7f05e35c59"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a892ab8cad098e9e9d8425e7f05e35c59">SVF::SVFIRBuilder::getBaseValueForExtArg</a></div><div class="ttdeci">const Value * getBaseValueForExtArg(const Value *V)</div><div class="ttdoc">Get the base value of (i8* src and i8* dst) for external argument (e.g. memcpy(i8* dst,...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01067">SVFIRBuilder.cpp:1067</a></div></div>
|
|
5090
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5ae68d4465feb54fcb8fd0cf20b7a71a"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5ae68d4465feb54fcb8fd0cf20b7a71a">SVF::SVFIRBuilder::handleIndCall</a></div><div class="ttdeci">void handleIndCall(CallBase *cs)</div><div class="ttdoc">Handle indirect call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01088">SVFIRBuilder.cpp:1088</a></div></div>
|
|
5091
|
+
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a821cd6daeaee15b117b41a272f743ff1"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a821cd6daeaee15b117b41a272f743ff1">SVF::CopyStmt::UITOFP</a></div><div class="ttdeci">@ UITOFP</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00384">SVFStatements.h:384</a></div></div>
|
|
5096
5092
|
<div class="ttc" id="aclassSVF_1_1NodeIDAllocator_html_a26b5e09e10448694435f74a8b622a7e8"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">SVF::NodeIDAllocator::allocateValueId</a></div><div class="ttdeci">NodeID allocateValueId(void)</div><div class="ttdoc">Allocate a value ID as determined by the strategy.</div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00128">NodeIDAllocator.cpp:128</a></div></div>
|
|
5097
5093
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a26eb45eab3da4695a6e5bad51b01ddc5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a26eb45eab3da4695a6e5bad51b01ddc5">SVF::SymbolTableInfo::getTotalSymNum</a></div><div class="ttdeci">u32_t getTotalSymNum() const</div><div class="ttdoc">Statistics.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00248">SymbolTableInfo.h:248</a></div></div>
|
|
5098
5094
|
<div class="ttc" id="aclassSVF_1_1IRGraph_html_a8b10c318674a47035d617b3ade4f069b"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a8b10c318674a47035d617b3ade4f069b">SVF::IRGraph::getVarargNode</a></div><div class="ttdeci">NodeID getVarargNode(const SVFFunction *func) const</div><div class="ttdoc">getVarargNode - Return the unique node representing the variadic argument of a variadic function.</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00157">IRGraph.h:157</a></div></div>
|
|
@@ -5106,33 +5102,32 @@ Private Attributes</h2></td></tr>
|
|
|
5106
5102
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a52bea4a99022b036104751cafa9152b1"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a52bea4a99022b036104751cafa9152b1">SVF::SVFIR::setModule</a></div><div class="ttdeci">void setModule(SVFModule *mod)</div><div class="ttdoc">Set/Get LLVM Module.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00156">SVFIR.h:156</a></div></div>
|
|
5107
5103
|
<div class="ttc" id="aclassSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00380">GenericGraph.h:380</a></div></div>
|
|
5108
5104
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a5a93f3d13e2b3df126fbc42b1bd09006"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5a93f3d13e2b3df126fbc42b1bd09006">SVF::SVFIRBuilder::getObjectNode</a></div><div class="ttdeci">NodeID getObjectNode(const Value *V)</div><div class="ttdoc">GetObject - Return the object node (stack/global/heap/function) according to a LLVM Value.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00098">SVFIRBuilder.h:98</a></div></div>
|
|
5109
|
-
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a78bc561098a07651f94e72bffa895e16"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a78bc561098a07651f94e72bffa895e16">SVF::CopyStmt::SITOFP</a></div><div class="ttdeci">@ SITOFP</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
5105
|
+
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a78bc561098a07651f94e72bffa895e16"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a78bc561098a07651f94e72bffa895e16">SVF::CopyStmt::SITOFP</a></div><div class="ttdeci">@ SITOFP</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00385">SVFStatements.h:385</a></div></div>
|
|
5110
5106
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a1689fa03795200b501ae3887906e7e72"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72">SVF::SymbolTableInfo::blkPtrSymID</a></div><div class="ttdeci">SymID blkPtrSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00183">SymbolTableInfo.h:183</a></div></div>
|
|
5111
5107
|
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html">SVF::SymbolTableBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00044">SymbolTableBuilder.h:44</a></div></div>
|
|
5112
5108
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a15105737c91d01ba9daf2161fad220ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a15105737c91d01ba9daf2161fad220ef">SVF::SVFIRBuilder::setCurrentLocation</a></div><div class="ttdeci">void setCurrentLocation(const Value *val, const BasicBlock *bb)</div><div class="ttdoc">Set current basic block in order to keep track of control flow information.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00241">SVFIRBuilder.h:241</a></div></div>
|
|
5113
5109
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
|
|
5114
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a7c401d6929e583be734c0c4e9957d0d7"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a7c401d6929e583be734c0c4e9957d0d7">SVF::SVFIRBuilder::getAccessPathFromBaseNode</a></div><div class="ttdeci">AccessPath getAccessPathFromBaseNode(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
5110
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a7c401d6929e583be734c0c4e9957d0d7"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a7c401d6929e583be734c0c4e9957d0d7">SVF::SVFIRBuilder::getAccessPathFromBaseNode</a></div><div class="ttdeci">AccessPath getAccessPathFromBaseNode(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01294">SVFIRBuilder.cpp:1294</a></div></div>
|
|
5115
5111
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a89e8cc23aad23d2c326b4a5ff12535ca"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a89e8cc23aad23d2c326b4a5ff12535ca">SVF::SVFIRBuilder::addRetEdge</a></div><div class="ttdeci">void addRetEdge(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Return edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00468">SVFIRBuilder.h:468</a></div></div>
|
|
5116
5112
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html">SVF::SymbolTableInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00047">SymbolTableInfo.h:47</a></div></div>
|
|
5117
5113
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_ad0977d55d947bdccd98d61c66d3f0cc7"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad0977d55d947bdccd98d61c66d3f0cc7">SVF::SVFIR::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const SVFValue *curInst, NodeID base, const AccessPath &ap) const</div><div class="ttdoc">Due to constraint expression, curInst is used to distinguish different instructions (e....</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00517">SVFIR.cpp:517</a></div></div>
|
|
5118
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a72efebdfe007ec8c515967ede76b6ce0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a72efebdfe007ec8c515967ede76b6ce0">SVF::SVFIR::addCallSiteRets</a></div><div class="ttdeci">void addCallSiteRets(RetICFGNode *retBlockNode, const SVFVar *arg)</div><div class="ttdoc">Add callsite returns.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
5119
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a55d8504dbc766c4ede031299a37417ef"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a55d8504dbc766c4ede031299a37417ef">SVF::SVFIRBuilder::addGlobalBlackHoleAddrEdge</a></div><div class="ttdeci">void addGlobalBlackHoleAddrEdge(NodeID node, const ConstantExpr *int2Ptrce)</div><div class="ttdoc">Add global black hole Address edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00261">SVFIRBuilder.h:261</a></div></div>
|
|
5114
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a72efebdfe007ec8c515967ede76b6ce0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a72efebdfe007ec8c515967ede76b6ce0">SVF::SVFIR::addCallSiteRets</a></div><div class="ttdeci">void addCallSiteRets(RetICFGNode *retBlockNode, const SVFVar *arg)</div><div class="ttdoc">Add callsite returns.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00517">SVFIR.h:517</a></div></div>
|
|
5120
5115
|
<div class="ttc" id="aclassllvm_1_1generic__bridge__gep__type__iterator_html"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html">llvm::generic_bridge_gep_type_iterator</a></div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00017">GEPTypeBridgeIterator.h:17</a></div></div>
|
|
5121
5116
|
<div class="ttc" id="aclassSVF_1_1Options_html_a1dd9ad3f11454be49b4c5099503db8e8"><div class="ttname"><a href="classSVF_1_1Options.html#a1dd9ad3f11454be49b4c5099503db8e8">SVF::Options::PAGDotGraph</a></div><div class="ttdeci">static const Option< bool > PAGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00121">Options.h:121</a></div></div>
|
|
5122
5117
|
<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#l00931">LLVMUtil.cpp:931</a></div></div>
|
|
5123
5118
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html">SVF::LLVMModuleSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00044">LLVMModule.h:44</a></div></div>
|
|
5124
5119
|
<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#l00219">LLVMModule.h:219</a></div></div>
|
|
5125
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a20ded5829d5975dfaca33f9c64113fe6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a20ded5829d5975dfaca33f9c64113fe6">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const SVFValue *val, NodeID i)</div><div class="ttdoc">Add a memory obj node.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
5120
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a20ded5829d5975dfaca33f9c64113fe6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a20ded5829d5975dfaca33f9c64113fe6">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const SVFValue *val, NodeID i)</div><div class="ttdoc">Add a memory obj node.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00540">SVFIR.h:540</a></div></div>
|
|
5126
5121
|
<div class="ttc" id="aclassSVF_1_1FunExitICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunExitICFGNode.html">SVF::FunExitICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00324">ICFGNode.h:324</a></div></div>
|
|
5127
5122
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a4550f2fb815882edfb666ac818792064"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4550f2fb815882edfb666ac818792064">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(const std::string &msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00099">SVFUtil.cpp:99</a></div></div>
|
|
5128
5123
|
<div class="ttc" id="aclassSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph< SVFVar, SVFStmt >::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00359">GenericGraph.h:359</a></div></div>
|
|
5129
|
-
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a6ade5bf3edc7b6c3faafc3e5ff3d0538"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6ade5bf3edc7b6c3faafc3e5ff3d0538">SVF::SVFIR::addVarargNode</a></div><div class="ttdeci">NodeID addVarargNode(const SVFFunction *val, NodeID i)</div><div class="ttdoc">Add a unique vararg node for a procedure.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#
|
|
5124
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a6ade5bf3edc7b6c3faafc3e5ff3d0538"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6ade5bf3edc7b6c3faafc3e5ff3d0538">SVF::SVFIR::addVarargNode</a></div><div class="ttdeci">NodeID addVarargNode(const SVFFunction *val, NodeID i)</div><div class="ttdoc">Add a unique vararg node for a procedure.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00553">SVFIR.h:553</a></div></div>
|
|
5130
5125
|
<div class="ttc" id="aclassSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00433">GenericGraph.h:433</a></div></div>
|
|
5131
5126
|
<div class="ttc" id="aclassSVF_1_1LLVMLoopAnalysis_html_a17e4805c2db146430c58af35625a388d"><div class="ttname"><a href="classSVF_1_1LLVMLoopAnalysis.html#a17e4805c2db146430c58af35625a388d">SVF::LLVMLoopAnalysis::build</a></div><div class="ttdeci">virtual void build(ICFG *icfg)</div><div class="ttdoc">Start from here.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMLoopAnalysis_8cpp_source.html#l00090">LLVMLoopAnalysis.cpp:90</a></div></div>
|
|
5132
5127
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a955a2f93cf9eef857e40f19bc24edb2f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a955a2f93cf9eef857e40f19bc24edb2f">SVF::SVFIR::addBinaryOPStmt</a></div><div class="ttdeci">BinaryOPStmt * addBinaryOPStmt(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Copy edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00148">SVFIR.cpp:148</a></div></div>
|
|
5133
5128
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a3f954c61381fe31088e791772c334105"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a3f954c61381fe31088e791772c334105">SVF::SVFIRBuilder::addBinaryOPEdge</a></div><div class="ttdeci">void addBinaryOPEdge(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Copy edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00427">SVFIRBuilder.h:427</a></div></div>
|
|
5134
5129
|
<div class="ttc" id="aclassSVF_1_1CHGraph_html"><div class="ttname"><a href="classSVF_1_1CHGraph.html">SVF::CHGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00215">CHG.h:215</a></div></div>
|
|
5135
|
-
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a975798ea3aeb2a77cc8858c712611afe"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a975798ea3aeb2a77cc8858c712611afe">SVF::CopyStmt::FPTOSI</a></div><div class="ttdeci">@ FPTOSI</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
5130
|
+
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a975798ea3aeb2a77cc8858c712611afe"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a975798ea3aeb2a77cc8858c712611afe">SVF::CopyStmt::FPTOSI</a></div><div class="ttdeci">@ FPTOSI</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00383">SVFStatements.h:383</a></div></div>
|
|
5136
5131
|
<div class="ttc" id="aclassSVF_1_1ICFG_html"><div class="ttname"><a href="classSVF_1_1ICFG.html">SVF::ICFG</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00047">ICFG.h:47</a></div></div>
|
|
5137
5132
|
<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#l00120">BasicTypes.h:120</a></div></div>
|
|
5138
5133
|
<div class="ttc" id="aclassSVF_1_1SVFIRWriter_html_a2bbb4e38ce3eb2c43b7f01cb240df9c8"><div class="ttname"><a href="classSVF_1_1SVFIRWriter.html#a2bbb4e38ce3eb2c43b7f01cb240df9c8">SVF::SVFIRWriter::writeJsonToPath</a></div><div class="ttdeci">static void writeJsonToPath(const SVFIR *svfir, const std::string &path)</div><div class="ttdef"><b>Definition:</b> <a href="SVFFileSystem_8cpp_source.html#l01005">SVFFileSystem.cpp:1005</a></div></div>
|
|
@@ -5159,29 +5154,29 @@ Private Attributes</h2></td></tr>
|
|
|
5159
5154
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a756ae2b40ec29f2f92c95919f615e5ec"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a756ae2b40ec29f2f92c95919f615e5ec">SVF::SVFIR::setICFG</a></div><div class="ttdeci">void setICFG(ICFG *i)</div><div class="ttdoc">Set/Get ICFG.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00166">SVFIR.h:166</a></div></div>
|
|
5160
5155
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a0814a6a71c4a8f08253bf16ad1ba5dc5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a0814a6a71c4a8f08253bf16ad1ba5dc5">SVF::SVFIR::addVariantGepStmt</a></div><div class="ttdeci">GepStmt * addVariantGepStmt(NodeID src, NodeID dst, const AccessPath &ap)</div><div class="ttdoc">Add Variant(Gep) edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00365">SVFIR.cpp:365</a></div></div>
|
|
5161
5156
|
<div class="ttc" id="aclassSVF_1_1SVFInstruction_html_ae009f41cbf48d949d4325e08fe8d7198"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html#ae009f41cbf48d949d4325e08fe8d7198">SVF::SVFInstruction::getParent</a></div><div class="ttdeci">const SVFBasicBlock * getParent() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00658">SVFValue.h:658</a></div></div>
|
|
5162
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_ae7fcd2050a57a43bfed2c7fd1c41d250"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">SVF::SVFIRBuilder::InitialGlobal</a></div><div class="ttdeci">void InitialGlobal(const GlobalVariable *gvar, Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
5157
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_ae7fcd2050a57a43bfed2c7fd1c41d250"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ae7fcd2050a57a43bfed2c7fd1c41d250">SVF::SVFIRBuilder::InitialGlobal</a></div><div class="ttdeci">void InitialGlobal(const GlobalVariable *gvar, Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00502">SVFIRBuilder.cpp:502</a></div></div>
|
|
5163
5158
|
<div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00631">SVFValue.h:631</a></div></div>
|
|
5164
5159
|
<div class="ttc" id="aclassSVF_1_1Options_html_a88bb706e03a3dd04546b4ce62af7b140"><div class="ttname"><a href="classSVF_1_1Options.html#a88bb706e03a3dd04546b4ce62af7b140">SVF::Options::VtableInSVFIR</a></div><div class="ttdeci">static const Option< bool > VtableInSVFIR</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00236">Options.h:236</a></div></div>
|
|
5165
5160
|
<div class="ttc" id="anamespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00049">GeneralType.h:49</a></div></div>
|
|
5166
5161
|
<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#l00231">LLVMUtil.cpp:231</a></div></div>
|
|
5167
5162
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_ac8c440fe6513495edb8949df5a32d979"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#ac8c440fe6513495edb8949df5a32d979">SVF::SVFIRBuilder::computeGepOffset</a></div><div class="ttdeci">bool computeGepOffset(const User *V, AccessPath &ap)</div><div class="ttdoc">Compute offset of a gep instruction or gep constant expression.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00270">SVFIRBuilder.cpp:270</a></div></div>
|
|
5168
5163
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_ae905a7d3f1b211fbaaf9e703b1f44482"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#ae905a7d3f1b211fbaaf9e703b1f44482">SVF::ObjTypeInference::inferObjType</a></div><div class="ttdeci">const Type * inferObjType(const Value *var)</div><div class="ttdoc">get or infer the type of the object pointed by the value</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00136">ObjTypeInference.cpp:136</a></div></div>
|
|
5169
|
-
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a16c9ba88473e39f9a105b74b016af046"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a16c9ba88473e39f9a105b74b016af046">SVF::CopyStmt::ZEXT</a></div><div class="ttdeci">@ ZEXT</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
5164
|
+
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a16c9ba88473e39f9a105b74b016af046"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a16c9ba88473e39f9a105b74b016af046">SVF::CopyStmt::ZEXT</a></div><div class="ttdeci">@ ZEXT</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00377">SVFStatements.h:377</a></div></div>
|
|
5170
5165
|
<div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVF::SVFStmt::Gep</a></div><div class="ttdeci">@ Gep</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00069">SVFStatements.h:69</a></div></div>
|
|
5171
5166
|
<div class="ttc" id="aclassSVF_1_1PAGBuilderFromFile_html"><div class="ttname"><a href="classSVF_1_1PAGBuilderFromFile.html">SVF::PAGBuilderFromFile</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGBuilderFromFile_8h_source.html#l00041">PAGBuilderFromFile.h:41</a></div></div>
|
|
5172
5167
|
<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#l00280">SVFValue.h:280</a></div></div>
|
|
5173
5168
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a7eb14738f0cf08cc8b5c623c953db4ba"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7eb14738f0cf08cc8b5c623c953db4ba">SVF::SVFIR::addCmpStmt</a></div><div class="ttdeci">CmpStmt * addCmpStmt(NodeID op1, NodeID op2, NodeID dst, u32_t predict)</div><div class="ttdoc">Add Copy edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00127">SVFIR.cpp:127</a></div></div>
|
|
5174
|
-
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a3ccc53ca9a6862674ee2ec3bd67aa515"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515">SVF::SVFIRBuilder::handleDirectCall</a></div><div class="ttdeci">void handleDirectCall(CallBase *cs, const Function *F)</div><div class="ttdoc">Handle direct call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
5169
|
+
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a3ccc53ca9a6862674ee2ec3bd67aa515"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a3ccc53ca9a6862674ee2ec3bd67aa515">SVF::SVFIRBuilder::handleDirectCall</a></div><div class="ttdeci">void handleDirectCall(CallBase *cs, const Function *F)</div><div class="ttdoc">Handle direct call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l01001">SVFIRBuilder.cpp:1001</a></div></div>
|
|
5175
5170
|
<div class="ttc" id="aclassSVF_1_1SVFCallInst_html_a496d0e963f0f6a4f9c08183fa91792b0"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#a496d0e963f0f6a4f9c08183fa91792b0">SVF::SVFCallInst::arg_size</a></div><div class="ttdeci">u32_t arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00738">SVFValue.h:738</a></div></div>
|
|
5176
5171
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa0b3e34188f721ff7145e47cb607c79a"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa0b3e34188f721ff7145e47cb607c79a">SVF::LLVMUtil::isCmpConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCmpConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00248">LLVMUtil.h:248</a></div></div>
|
|
5177
|
-
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a32b1e88bbb7433ed8071e9dd9daa2c83"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a32b1e88bbb7433ed8071e9dd9daa2c83">SVF::CopyStmt::INTTOPTR</a></div><div class="ttdeci">@ INTTOPTR</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
5178
|
-
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a3fbb25d7761cca1dd44e06e41e5570c9"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a3fbb25d7761cca1dd44e06e41e5570c9">SVF::CopyStmt::COPYVAL</a></div><div class="ttdeci">@ COPYVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
5172
|
+
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a32b1e88bbb7433ed8071e9dd9daa2c83"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a32b1e88bbb7433ed8071e9dd9daa2c83">SVF::CopyStmt::INTTOPTR</a></div><div class="ttdeci">@ INTTOPTR</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00386">SVFStatements.h:386</a></div></div>
|
|
5173
|
+
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a3fbb25d7761cca1dd44e06e41e5570c9"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a3fbb25d7761cca1dd44e06e41e5570c9">SVF::CopyStmt::COPYVAL</a></div><div class="ttdeci">@ COPYVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00376">SVFStatements.h:376</a></div></div>
|
|
5179
5174
|
<div class="ttc" id="anamespaceSVF_html_a7332f8059ea95472dcc231de884a5768"><div class="ttname"><a href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">SVF::ConstantData</a></div><div class="ttdeci">llvm::ConstantData ConstantData</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00116">BasicTypes.h:116</a></div></div>
|
|
5180
5175
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a8abc436992aa3b6b636084ff5f9a8ef2"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a8abc436992aa3b6b636084ff5f9a8ef2">SVF::SVFIR::addUnaryOPStmt</a></div><div class="ttdeci">UnaryOPStmt * addUnaryOPStmt(NodeID src, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Unary edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00168">SVFIR.cpp:168</a></div></div>
|
|
5181
5176
|
<div class="ttc" id="aclassSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00101">GenericGraph.h:101</a></div></div>
|
|
5182
5177
|
<div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0e45ab5b38059371c47d5f2011118a4d"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0e45ab5b38059371c47d5f2011118a4d">SVF::SVFStmt::setBB</a></div><div class="ttdeci">void setBB(const SVFBasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00151">SVFStatements.h:151</a></div></div>
|
|
5183
5178
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_af9804d78e4158d3c8961e1f84bbef91e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af9804d78e4158d3c8961e1f84bbef91e">SVF::SVFIR::addStoreStmt</a></div><div class="ttdeci">StoreStmt * addStoreStmt(NodeID src, NodeID dst, const IntraICFGNode *val)</div><div class="ttdoc">Add Store edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00223">SVFIR.cpp:223</a></div></div>
|
|
5184
|
-
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a80a8638b1b7a7057fb4cd577e1949f6c"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a80a8638b1b7a7057fb4cd577e1949f6c">SVF::CopyStmt::FPTOUI</a></div><div class="ttdeci">@ FPTOUI</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#
|
|
5179
|
+
<div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a80a8638b1b7a7057fb4cd577e1949f6c"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a80a8638b1b7a7057fb4cd577e1949f6c">SVF::CopyStmt::FPTOUI</a></div><div class="ttdeci">@ FPTOUI</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00382">SVFStatements.h:382</a></div></div>
|
|
5185
5180
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a574bd5c9f11681c70db29c25f25a4cba"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a574bd5c9f11681c70db29c25f25a4cba">SVF::SVFIR::addCallPE</a></div><div class="ttdeci">CallPE * addCallPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Call edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00241">SVFIR.cpp:241</a></div></div>
|
|
5186
5181
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a811a3489df0f793c7a5482d31d470a4c"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a811a3489df0f793c7a5482d31d470a4c">SVF::SymbolTableInfo::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements(const SVFType *T)</div><div class="ttdoc">Number of flattened elements of an array or struct.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00171">SymbolTableInfo.cpp:171</a></div></div>
|
|
5187
5182
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html_a3fe99644b2bf5f0f9b2b21a56a400ad4"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a3fe99644b2bf5f0f9b2b21a56a400ad4">SVF::SVFIRBuilder::getVarargNode</a></div><div class="ttdeci">NodeID getVarargNode(const SVFFunction *func)</div><div class="ttdoc">getVarargNode - Return the node representing the unique variadic argument of a function.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00111">SVFIRBuilder.h:111</a></div></div>
|