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
|
@@ -224,72 +224,72 @@ Friends</h2></td></tr>
|
|
|
224
224
|
<p>Analyze byte size of heap alloc function (e.g. malloc/calloc/...) </p>
|
|
225
225
|
<p>Analyze byte size of heap alloc function (e.g. malloc/calloc/...) 1) <b>attribute</b>((annotate("ALLOC_RET"), annotate("AllocSize:Arg0"))) void* safe_malloc(unsigned long size). Byte Size is the size(Arg0) 2)__attribute__((annotate("ALLOC_RET"), annotate("AllocSize:Arg0*Arg1"))) char* safecalloc(int a, int b) Byte Size is a(Arg0) * b(Arg1) 3)__attribute__((annotate("ALLOC_RET"), annotate("UNKNOWN"))) void* __sysv_signal(int a, void *b) Byte Size is Unknown If all required arg values are constant, byte Size is also constant, otherwise return ByteSize 0 </p>
|
|
226
226
|
|
|
227
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
228
|
-
<div class="fragment"><div class="line"><a name="
|
|
229
|
-
<div class="line"><a name="
|
|
230
|
-
<div class="line"><a name="
|
|
231
|
-
<div class="line"><a name="
|
|
232
|
-
<div class="line"><a name="
|
|
233
|
-
<div class="line"><a name="
|
|
234
|
-
<div class="line"><a name="
|
|
235
|
-
<div class="line"><a name="
|
|
236
|
-
<div class="line"><a name="
|
|
237
|
-
<div class="line"><a name="
|
|
238
|
-
<div class="line"><a name="
|
|
239
|
-
<div class="line"><a name="
|
|
240
|
-
<div class="line"><a name="
|
|
241
|
-
<div class="line"><a name="
|
|
242
|
-
<div class="line"><a name="
|
|
243
|
-
<div class="line"><a name="
|
|
244
|
-
<div class="line"><a name="
|
|
245
|
-
<div class="line"><a name="
|
|
246
|
-
<div class="line"><a name="
|
|
247
|
-
<div class="line"><a name="
|
|
248
|
-
<div class="line"><a name="
|
|
249
|
-
<div class="line"><a name="
|
|
250
|
-
<div class="line"><a name="
|
|
251
|
-
<div class="line"><a name="
|
|
252
|
-
<div class="line"><a name="
|
|
253
|
-
<div class="line"><a name="
|
|
254
|
-
<div class="line"><a name="
|
|
255
|
-
<div class="line"><a name="
|
|
256
|
-
<div class="line"><a name="
|
|
257
|
-
<div class="line"><a name="
|
|
258
|
-
<div class="line"><a name="
|
|
259
|
-
<div class="line"><a name="
|
|
260
|
-
<div class="line"><a name="
|
|
261
|
-
<div class="line"><a name="
|
|
262
|
-
<div class="line"><a name="
|
|
263
|
-
<div class="line"><a name="
|
|
264
|
-
<div class="line"><a name="
|
|
265
|
-
<div class="line"><a name="
|
|
266
|
-
<div class="line"><a name="
|
|
267
|
-
<div class="line"><a name="
|
|
268
|
-
<div class="line"><a name="
|
|
269
|
-
<div class="line"><a name="
|
|
270
|
-
<div class="line"><a name="
|
|
271
|
-
<div class="line"><a name="
|
|
272
|
-
<div class="line"><a name="
|
|
273
|
-
<div class="line"><a name="
|
|
274
|
-
<div class="line"><a name="
|
|
275
|
-
<div class="line"><a name="
|
|
276
|
-
<div class="line"><a name="
|
|
277
|
-
<div class="line"><a name="
|
|
278
|
-
<div class="line"><a name="
|
|
279
|
-
<div class="line"><a name="
|
|
280
|
-
<div class="line"><a name="
|
|
281
|
-
<div class="line"><a name="
|
|
282
|
-
<div class="line"><a name="
|
|
283
|
-
<div class="line"><a name="
|
|
284
|
-
<div class="line"><a name="
|
|
285
|
-
<div class="line"><a name="
|
|
286
|
-
<div class="line"><a name="
|
|
287
|
-
<div class="line"><a name="
|
|
288
|
-
<div class="line"><a name="
|
|
289
|
-
<div class="line"><a name="
|
|
290
|
-
<div class="line"><a name="
|
|
291
|
-
<div class="line"><a name="
|
|
292
|
-
<div class="line"><a name="
|
|
227
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00739">739</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
228
|
+
<div class="fragment"><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> {</div>
|
|
229
|
+
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">llvm::CallInst</a>* callInst = llvm::dyn_cast<llvm::CallInst>(val))</div>
|
|
230
|
+
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  {</div>
|
|
231
|
+
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">llvm::Function</a>* calledFunction =</div>
|
|
232
|
+
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  callInst->getCalledFunction())</div>
|
|
233
|
+
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  {</div>
|
|
234
|
+
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFunction =</div>
|
|
235
|
+
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(</div>
|
|
236
|
+
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  calledFunction);</div>
|
|
237
|
+
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  std::vector<const Value*> args;</div>
|
|
238
|
+
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="comment">// Heap alloc functions have annoation like "AllocSize:Arg1"</span></div>
|
|
239
|
+
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <span class="keywordflow">for</span> (<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> annotation : svfFunction-><a class="code" href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">getAnnotations</a>())</div>
|
|
240
|
+
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  {</div>
|
|
241
|
+
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">"AllocSize:"</span>) != std::string::npos)</div>
|
|
242
|
+
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  {</div>
|
|
243
|
+
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> allocSize = annotation.substr(10);</div>
|
|
244
|
+
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  std::stringstream ss(allocSize);</div>
|
|
245
|
+
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> token;</div>
|
|
246
|
+
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="comment">// Analyaze annotation string and attract Arg list</span></div>
|
|
247
|
+
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <span class="keywordflow">while</span> (std::getline(ss, token, <span class="charliteral">'*'</span>))</div>
|
|
248
|
+
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  {</div>
|
|
249
|
+
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keywordflow">if</span> (token.rfind(<span class="stringliteral">"Arg"</span>, 0) == 0)</div>
|
|
250
|
+
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  {</div>
|
|
251
|
+
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> argIndex;</div>
|
|
252
|
+
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  std::istringstream(token.substr(3)) >> argIndex;</div>
|
|
253
|
+
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordflow">if</span> (argIndex < callInst->getNumOperands() - 1)</div>
|
|
254
|
+
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  {</div>
|
|
255
|
+
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  args.push_back(</div>
|
|
256
|
+
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  callInst->getArgOperand(argIndex));</div>
|
|
257
|
+
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  }</div>
|
|
258
|
+
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  }</div>
|
|
259
|
+
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  }</div>
|
|
260
|
+
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  }</div>
|
|
261
|
+
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  }</div>
|
|
262
|
+
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> product = 1;</div>
|
|
263
|
+
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">if</span> (args.size() > 0)</div>
|
|
264
|
+
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  {</div>
|
|
265
|
+
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="comment">// for annotations like "AllocSize:Arg0*Arg1"</span></div>
|
|
266
|
+
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::Value</a>* arg : args)</div>
|
|
267
|
+
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  {</div>
|
|
268
|
+
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">llvm::ConstantInt</a>* constIntArg =</div>
|
|
269
|
+
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  llvm::dyn_cast<llvm::ConstantInt>(arg))</div>
|
|
270
|
+
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  {</div>
|
|
271
|
+
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="comment">// Multiply the constant Value if all Args are const</span></div>
|
|
272
|
+
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  product *= constIntArg->getZExtValue();</div>
|
|
273
|
+
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  }</div>
|
|
274
|
+
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="keywordflow">else</span></div>
|
|
275
|
+
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  {</div>
|
|
276
|
+
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="comment">// if Arg list has non-const value, return 0 to indicate it is non const byte size</span></div>
|
|
277
|
+
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">return</span> 0;</div>
|
|
278
|
+
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  }</div>
|
|
279
|
+
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  }</div>
|
|
280
|
+
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="comment">// If all the Args are const, return product</span></div>
|
|
281
|
+
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">return</span> product;</div>
|
|
282
|
+
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  }</div>
|
|
283
|
+
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">else</span></div>
|
|
284
|
+
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  {</div>
|
|
285
|
+
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="comment">// for annotations like "AllocSize:UNKNOWN"</span></div>
|
|
286
|
+
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordflow">return</span> 0;</div>
|
|
287
|
+
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  }</div>
|
|
288
|
+
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  }</div>
|
|
289
|
+
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  }</div>
|
|
290
|
+
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="comment">// if it is not CallInst or CallInst has no CalledFunction, return 0 to indicate it is non const byte size</span></div>
|
|
291
|
+
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keywordflow">return</span> 0;</div>
|
|
292
|
+
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span> }</div>
|
|
293
293
|
</div><!-- fragment -->
|
|
294
294
|
</div>
|
|
295
295
|
</div>
|
|
@@ -331,23 +331,23 @@ Friends</h2></td></tr>
|
|
|
331
331
|
<p>Analyse types of heap and static objects </p>
|
|
332
332
|
<p>For an C++ class, it can have variant elements depending on the vtable size, Hence we only handle non-cpp-class object, the type of the cpp class is treated as default PointerType</p>
|
|
333
333
|
|
|
334
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
335
|
-
<div class="fragment"><div class="line"><a name="
|
|
336
|
-
<div class="line"><a name="
|
|
337
|
-
<div class="line"><a name="
|
|
338
|
-
<div class="line"><a name="
|
|
339
|
-
<div class="line"><a name="
|
|
340
|
-
<div class="line"><a name="
|
|
341
|
-
<div class="line"><a name="
|
|
342
|
-
<div class="line"><a name="
|
|
343
|
-
<div class="line"><a name="
|
|
344
|
-
<div class="line"><a name="
|
|
345
|
-
<div class="line"><a name="
|
|
346
|
-
<div class="line"><a name="
|
|
347
|
-
<div class="line"><a name="
|
|
348
|
-
<div class="line"><a name="
|
|
349
|
-
<div class="line"><a name="
|
|
350
|
-
<div class="line"><a name="
|
|
334
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00809">809</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
335
|
+
<div class="fragment"><div class="line"><a name="l00810"></a><span class="lineno"> 810</span> {</div>
|
|
336
|
+
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">ObjTypeInfo::HEAP_OBJ</a>);</div>
|
|
337
|
+
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo, val);</div>
|
|
338
|
+
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* objTy = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a610a7777a48132caadec167c8109f044">getLLVMType</a>(typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>());</div>
|
|
339
|
+
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="keywordflow">if</span>(SVFUtil::isa<ArrayType>(objTy))</div>
|
|
340
|
+
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d">getNumOfElements</a>(objTy);</div>
|
|
341
|
+
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* st = SVFUtil::dyn_cast<StructType>(objTy))</div>
|
|
342
|
+
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  {</div>
|
|
343
|
+
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1cppUtil.html#a4e1785295e2695fae72758d8bbe4f7ac">cppUtil::classTyHasVTable</a>(st))</div>
|
|
344
|
+
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ae26937ca2107517e6ede8eb6d76b95d5">resetTypeForHeapStaticObj</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFType(</div>
|
|
345
|
+
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1SymbolTableBuilder.html#a4eebcc8dc7f23ead07c64bf523d0e68e">getTypeInference</a>()->ptrType()));</div>
|
|
346
|
+
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="keywordflow">else</span></div>
|
|
347
|
+
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d">getNumOfElements</a>(objTy);</div>
|
|
348
|
+
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  }</div>
|
|
349
|
+
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="keywordflow">return</span> typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div>
|
|
350
|
+
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span> }</div>
|
|
351
351
|
</div><!-- fragment -->
|
|
352
352
|
</div>
|
|
353
353
|
</div>
|
|
@@ -388,32 +388,32 @@ Friends</h2></td></tr>
|
|
|
388
388
|
<p>Analyse types of all flattened fields of this object. </p>
|
|
389
389
|
<p>Analyse types of all flattened fields of this object </p>
|
|
390
390
|
|
|
391
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
392
|
-
<div class="fragment"><div class="line"><a name="
|
|
393
|
-
<div class="line"><a name="
|
|
394
|
-
<div class="line"><a name="
|
|
395
|
-
<div class="line"><a name="
|
|
396
|
-
<div class="line"><a name="
|
|
397
|
-
<div class="line"><a name="
|
|
398
|
-
<div class="line"><a name="
|
|
399
|
-
<div class="line"><a name="
|
|
400
|
-
<div class="line"><a name="
|
|
401
|
-
<div class="line"><a name="
|
|
402
|
-
<div class="line"><a name="
|
|
403
|
-
<div class="line"><a name="
|
|
404
|
-
<div class="line"><a name="
|
|
405
|
-
<div class="line"><a name="
|
|
406
|
-
<div class="line"><a name="
|
|
407
|
-
<div class="line"><a name="
|
|
408
|
-
<div class="line"><a name="
|
|
409
|
-
<div class="line"><a name="
|
|
410
|
-
<div class="line"><a name="
|
|
411
|
-
<div class="line"><a name="
|
|
412
|
-
<div class="line"><a name="
|
|
413
|
-
<div class="line"><a name="
|
|
414
|
-
<div class="line"><a name="
|
|
415
|
-
<div class="line"><a name="
|
|
416
|
-
<div class="line"><a name="
|
|
391
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00698">698</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
392
|
+
<div class="fragment"><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> {</div>
|
|
393
|
+
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *elemTy = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a610a7777a48132caadec167c8109f044">getLLVMType</a>(typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>());</div>
|
|
394
|
+
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="comment">// Find the inter nested array element</span></div>
|
|
395
|
+
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* AT = SVFUtil::dyn_cast<ArrayType>(elemTy))</div>
|
|
396
|
+
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  {</div>
|
|
397
|
+
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  elemTy = AT->getElementType();</div>
|
|
398
|
+
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalVariable>(val) &&</div>
|
|
399
|
+
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  SVFUtil::cast<GlobalVariable>(val)->hasInitializer() &&</div>
|
|
400
|
+
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  SVFUtil::isa<ConstantArray>(</div>
|
|
401
|
+
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  SVFUtil::cast<GlobalVariable>(val)->getInitializer()))</div>
|
|
402
|
+
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">ObjTypeInfo::CONST_ARRAY_OBJ</a>);</div>
|
|
403
|
+
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">else</span></div>
|
|
404
|
+
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c">ObjTypeInfo::VAR_ARRAY_OBJ</a>);</div>
|
|
405
|
+
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  }</div>
|
|
406
|
+
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType>(elemTy))</div>
|
|
407
|
+
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  {</div>
|
|
408
|
+
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalVariable>(val) &&</div>
|
|
409
|
+
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  SVFUtil::cast<GlobalVariable>(val)->hasInitializer() &&</div>
|
|
410
|
+
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  SVFUtil::isa<ConstantStruct>(</div>
|
|
411
|
+
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  SVFUtil::cast<GlobalVariable>(val)->getInitializer()))</div>
|
|
412
|
+
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd">ObjTypeInfo::CONST_STRUCT_OBJ</a>);</div>
|
|
413
|
+
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keywordflow">else</span></div>
|
|
414
|
+
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08">ObjTypeInfo::VAR_STRUCT_OBJ</a>);</div>
|
|
415
|
+
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  }</div>
|
|
416
|
+
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span> }</div>
|
|
417
417
|
</div><!-- fragment -->
|
|
418
418
|
</div>
|
|
419
419
|
</div>
|
|
@@ -454,18 +454,18 @@ Friends</h2></td></tr>
|
|
|
454
454
|
<p>Analyse types of heap and static objects. </p>
|
|
455
455
|
<p>Analyse types of heap and static objects </p>
|
|
456
456
|
|
|
457
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
458
|
-
<div class="fragment"><div class="line"><a name="
|
|
459
|
-
<div class="line"><a name="
|
|
460
|
-
<div class="line"><a name="
|
|
461
|
-
<div class="line"><a name="
|
|
462
|
-
<div class="line"><a name="
|
|
463
|
-
<div class="line"><a name="
|
|
464
|
-
<div class="line"><a name="
|
|
465
|
-
<div class="line"><a name="
|
|
466
|
-
<div class="line"><a name="
|
|
467
|
-
<div class="line"><a name="
|
|
468
|
-
<div class="line"><a name="
|
|
457
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00832">832</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
458
|
+
<div class="fragment"><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> {</div>
|
|
459
|
+
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* castUse = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">getFirstUseViaCastInst</a>(val))</div>
|
|
460
|
+
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  {</div>
|
|
461
|
+
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a4e7606afe2dabdef9c9836ae798a9d98">ObjTypeInfo::STATIC_OBJ</a>);</div>
|
|
462
|
+
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,castUse);</div>
|
|
463
|
+
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  }</div>
|
|
464
|
+
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">else</span></div>
|
|
465
|
+
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  {</div>
|
|
466
|
+
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">ObjTypeInfo::HEAP_OBJ</a>);</div>
|
|
467
|
+
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  }</div>
|
|
468
|
+
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span> }</div>
|
|
469
469
|
</div><!-- fragment -->
|
|
470
470
|
</div>
|
|
471
471
|
</div>
|
|
@@ -1049,71 +1049,71 @@ Friends</h2></td></tr>
|
|
|
1049
1049
|
|
|
1050
1050
|
<p>Create an objectInfo based on LLVM value. </p>
|
|
1051
1051
|
|
|
1052
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
1053
|
-
<div class="fragment"><div class="line"><a name="
|
|
1054
|
-
<div class="line"><a name="
|
|
1055
|
-
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  </div>
|
|
1056
|
-
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* I = SVFUtil::dyn_cast<Instruction>(val);</div>
|
|
1052
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00629">629</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
1053
|
+
<div class="fragment"><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> {</div>
|
|
1054
|
+
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* objTy = <span class="keyword">nullptr</span>;</div>
|
|
1057
1055
|
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  </div>
|
|
1058
|
-
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="
|
|
1059
|
-
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span> 
|
|
1060
|
-
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="
|
|
1061
|
-
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span> 
|
|
1062
|
-
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span> 
|
|
1063
|
-
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span> 
|
|
1064
|
-
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span> 
|
|
1065
|
-
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span> 
|
|
1066
|
-
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span> 
|
|
1067
|
-
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span> 
|
|
1068
|
-
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span> 
|
|
1069
|
-
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span> 
|
|
1070
|
-
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span> 
|
|
1071
|
-
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span> 
|
|
1072
|
-
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span> 
|
|
1073
|
-
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span> 
|
|
1074
|
-
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span> 
|
|
1075
|
-
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span> 
|
|
1076
|
-
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span> 
|
|
1077
|
-
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span> 
|
|
1078
|
-
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span> 
|
|
1079
|
-
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> 
|
|
1080
|
-
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span> 
|
|
1081
|
-
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span> 
|
|
1082
|
-
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span> 
|
|
1083
|
-
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span> 
|
|
1084
|
-
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span> 
|
|
1085
|
-
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span> 
|
|
1086
|
-
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span> 
|
|
1087
|
-
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> 
|
|
1088
|
-
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> 
|
|
1089
|
-
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span> 
|
|
1090
|
-
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span> 
|
|
1091
|
-
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span> 
|
|
1092
|
-
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span> 
|
|
1093
|
-
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span> 
|
|
1094
|
-
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span> 
|
|
1095
|
-
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span> 
|
|
1096
|
-
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span> 
|
|
1097
|
-
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span> 
|
|
1098
|
-
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span> 
|
|
1099
|
-
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span> 
|
|
1100
|
-
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span> 
|
|
1101
|
-
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">"
|
|
1102
|
-
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <
|
|
1103
|
-
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span> 
|
|
1104
|
-
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span> 
|
|
1105
|
-
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span> 
|
|
1106
|
-
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> 
|
|
1107
|
-
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> 
|
|
1108
|
-
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span> 
|
|
1109
|
-
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span> 
|
|
1110
|
-
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span> 
|
|
1111
|
-
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span> 
|
|
1112
|
-
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span> 
|
|
1113
|
-
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span> 
|
|
1114
|
-
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span> 
|
|
1115
|
-
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span> 
|
|
1116
|
-
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span> }</div>
|
|
1056
|
+
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* I = SVFUtil::dyn_cast<Instruction>(val);</div>
|
|
1057
|
+
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  </div>
|
|
1058
|
+
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="comment">// We consider two types of objects:</span></div>
|
|
1059
|
+
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="comment">// (1) A heap/static object from a callsite</span></div>
|
|
1060
|
+
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">if</span> (I && <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4af4db2fe43846609d2ed1d7022b1be1">isNonInstricCallSite</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFInstruction(I)))</div>
|
|
1061
|
+
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  {</div>
|
|
1062
|
+
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  objTy = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a19666d732a24e5e286350821b0cea109">inferTypeOfHeapObjOrStaticObj</a>(I);</div>
|
|
1063
|
+
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  }</div>
|
|
1064
|
+
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="comment">// (2) Other objects (e.g., alloca, global, etc.)</span></div>
|
|
1065
|
+
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">else</span></div>
|
|
1066
|
+
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  {</div>
|
|
1067
|
+
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordflow">if</span> (SVFUtil::isa<PointerType>(val->getType()))</div>
|
|
1068
|
+
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  {</div>
|
|
1069
|
+
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3bacb4f95c73e6d794901d01c6b65a83">AllocaInst</a> *allocaInst = SVFUtil::dyn_cast<AllocaInst>(val))</div>
|
|
1070
|
+
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  {</div>
|
|
1071
|
+
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="comment">// get the type of the allocated memory</span></div>
|
|
1072
|
+
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="comment">// e.g., for `%retval = alloca i64, align 4`, we return i64</span></div>
|
|
1073
|
+
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  objTy = allocaInst->getAllocatedType();</div>
|
|
1074
|
+
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  }</div>
|
|
1075
|
+
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a> *global = SVFUtil::dyn_cast<GlobalValue>(val))</div>
|
|
1076
|
+
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  {</div>
|
|
1077
|
+
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="comment">// get the pointee type of the global pointer (begins with @ symbol in llvm)</span></div>
|
|
1078
|
+
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  objTy = global->getValueType();</div>
|
|
1079
|
+
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  }</div>
|
|
1080
|
+
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">else</span></div>
|
|
1081
|
+
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  {</div>
|
|
1082
|
+
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">dumpValueAndDbgInfo</a>(val) << <span class="stringliteral">"\n"</span>;</div>
|
|
1083
|
+
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"not an allocation or global?"</span>);</div>
|
|
1084
|
+
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  }</div>
|
|
1085
|
+
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  }</div>
|
|
1086
|
+
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  }</div>
|
|
1087
|
+
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  </div>
|
|
1088
|
+
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keywordflow">if</span> (objTy)</div>
|
|
1089
|
+
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  {</div>
|
|
1090
|
+
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  (void) <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af7aae2e2851c948f85600066a5a394ca">getOrAddSVFTypeInfo</a>(objTy);</div>
|
|
1091
|
+
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(</div>
|
|
1092
|
+
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFType(objTy),</div>
|
|
1093
|
+
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>());</div>
|
|
1094
|
+
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ae938564e6a36848cb848a5badc15a1de">initTypeInfo</a>(typeInfo,val, objTy);</div>
|
|
1095
|
+
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordflow">return</span> typeInfo;</div>
|
|
1096
|
+
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  }</div>
|
|
1097
|
+
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keywordflow">else</span></div>
|
|
1098
|
+
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  {</div>
|
|
1099
|
+
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">"try to create an object with a non-pointer type."</span>);</div>
|
|
1100
|
+
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(val->getName().str());</div>
|
|
1101
|
+
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">"("</span> + <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFValue(val)-><a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>() + <span class="stringliteral">")"</span>);</div>
|
|
1102
|
+
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(val))</div>
|
|
1103
|
+
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  {</div>
|
|
1104
|
+
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(</div>
|
|
1105
|
+
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFType(val->getType()),</div>
|
|
1106
|
+
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  0);</div>
|
|
1107
|
+
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ae938564e6a36848cb848a5badc15a1de">initTypeInfo</a>(typeInfo,val, val->getType());</div>
|
|
1108
|
+
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">return</span> typeInfo;</div>
|
|
1109
|
+
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div>
|
|
1110
|
+
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="keywordflow">else</span></div>
|
|
1111
|
+
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  {</div>
|
|
1112
|
+
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"Memory object must be either (1) held by a pointer-typed ref value or (2) a constant value (e.g., 10)."</span>);</div>
|
|
1113
|
+
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  abort();</div>
|
|
1114
|
+
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  }</div>
|
|
1115
|
+
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  }</div>
|
|
1116
|
+
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span> }</div>
|
|
1117
1117
|
</div><!-- fragment -->
|
|
1118
1118
|
</div>
|
|
1119
1119
|
</div>
|
|
@@ -1136,16 +1136,16 @@ Friends</h2></td></tr>
|
|
|
1136
1136
|
<p>Return size of this object based on LLVM value. </p>
|
|
1137
1137
|
<p>Return size of this Object </p>
|
|
1138
1138
|
|
|
1139
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
1140
|
-
<div class="fragment"><div class="line"><a name="
|
|
1141
|
-
<div class="line"><a name="
|
|
1142
|
-
<div class="line"><a name="
|
|
1143
|
-
<div class="line"><a name="
|
|
1144
|
-
<div class="line"><a name="
|
|
1145
|
-
<div class="line"><a name="
|
|
1146
|
-
<div class="line"><a name="
|
|
1147
|
-
<div class="line"><a name="
|
|
1148
|
-
<div class="line"><a name="
|
|
1139
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00941">941</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
1140
|
+
<div class="fragment"><div class="line"><a name="l00942"></a><span class="lineno"> 942</span> {</div>
|
|
1141
|
+
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  assert(ety && <span class="stringliteral">"type is null?"</span>);</div>
|
|
1142
|
+
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> numOfFields = 1;</div>
|
|
1143
|
+
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType, ArrayType>(ety))</div>
|
|
1144
|
+
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  {</div>
|
|
1145
|
+
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  numOfFields = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a603cf580467b32df5fad94ade3287b0f">getNumOfFlattenElements</a>(ety);</div>
|
|
1146
|
+
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  }</div>
|
|
1147
|
+
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keywordflow">return</span> numOfFields;</div>
|
|
1148
|
+
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span> }</div>
|
|
1149
1149
|
</div><!-- fragment -->
|
|
1150
1150
|
</div>
|
|
1151
1151
|
</div>
|
|
@@ -1176,13 +1176,13 @@ Friends</h2></td></tr>
|
|
|
1176
1176
|
<p>Number of flattened elements of an array or struct. </p>
|
|
1177
1177
|
<p>Get a reference to the components of struct_info. Number of flattened elements of an array or struct </p>
|
|
1178
1178
|
|
|
1179
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
1180
|
-
<div class="fragment"><div class="line"><a name="
|
|
1181
|
-
<div class="line"><a name="
|
|
1182
|
-
<div class="line"><a name="
|
|
1183
|
-
<div class="line"><a name="
|
|
1184
|
-
<div class="line"><a name="
|
|
1185
|
-
<div class="line"><a name="
|
|
1179
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00953">953</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
1180
|
+
<div class="fragment"><div class="line"><a name="l00954"></a><span class="lineno"> 954</span> {</div>
|
|
1181
|
+
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">Options::ModelArrays</a>())</div>
|
|
1182
|
+
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af7aae2e2851c948f85600066a5a394ca">getOrAddSVFTypeInfo</a>(T)-><a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
|
|
1183
|
+
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keywordflow">else</span></div>
|
|
1184
|
+
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af7aae2e2851c948f85600066a5a394ca">getOrAddSVFTypeInfo</a>(T)-><a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
|
|
1185
|
+
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span> }</div>
|
|
1186
1186
|
</div><!-- fragment -->
|
|
1187
1187
|
</div>
|
|
1188
1188
|
</div>
|
|
@@ -1212,10 +1212,10 @@ Friends</h2></td></tr>
|
|
|
1212
1212
|
|
|
1213
1213
|
<p>Get a reference to StructInfo. </p>
|
|
1214
1214
|
|
|
1215
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
1216
|
-
<div class="fragment"><div class="line"><a name="
|
|
1217
|
-
<div class="line"><a name="
|
|
1218
|
-
<div class="line"><a name="
|
|
1215
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00961">961</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
1216
|
+
<div class="fragment"><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> {</div>
|
|
1217
|
+
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(T)-><a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>();</div>
|
|
1218
|
+
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span> }</div>
|
|
1219
1219
|
</div><!-- fragment -->
|
|
1220
1220
|
</div>
|
|
1221
1221
|
</div>
|
|
@@ -1242,10 +1242,10 @@ Friends</h2></td></tr>
|
|
|
1242
1242
|
</table>
|
|
1243
1243
|
</div><div class="memdoc">
|
|
1244
1244
|
|
|
1245
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
1246
|
-
<div class="fragment"><div class="line"><a name="
|
|
1247
|
-
<div class="line"><a name="
|
|
1248
|
-
<div class="line"><a name="
|
|
1245
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00576">576</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
1246
|
+
<div class="fragment"><div class="line"><a name="l00577"></a><span class="lineno"> 577</span> {</div>
|
|
1247
|
+
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#afcde3a8e7d5eff76d017bd5c4b84cd1c">getTypeInference</a>();</div>
|
|
1248
|
+
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span> }</div>
|
|
1249
1249
|
</div><!-- fragment -->
|
|
1250
1250
|
</div>
|
|
1251
1251
|
</div>
|
|
@@ -1329,39 +1329,41 @@ Friends</h2></td></tr>
|
|
|
1329
1329
|
<div class="line"><a name="l00440"></a><span class="lineno"> 440</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>
|
|
1330
1330
|
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  {</div>
|
|
1331
1331
|
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(int2Ptrce);</div>
|
|
1332
|
-
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span> 
|
|
1333
|
-
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span> 
|
|
1334
|
-
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span> 
|
|
1335
|
-
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> 
|
|
1336
|
-
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span> 
|
|
1337
|
-
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#
|
|
1338
|
-
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span> 
|
|
1339
|
-
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span> 
|
|
1340
|
-
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span> 
|
|
1341
|
-
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span> 
|
|
1342
|
-
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span> 
|
|
1343
|
-
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span> 
|
|
1344
|
-
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> 
|
|
1345
|
-
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span> 
|
|
1346
|
-
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span> 
|
|
1347
|
-
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span> 
|
|
1348
|
-
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span> 
|
|
1349
|
-
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span> 
|
|
1350
|
-
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span> 
|
|
1351
|
-
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span> 
|
|
1352
|
-
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span> 
|
|
1353
|
-
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span> 
|
|
1354
|
-
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span> 
|
|
1355
|
-
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span> 
|
|
1356
|
-
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span> 
|
|
1357
|
-
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span> 
|
|
1358
|
-
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span> 
|
|
1359
|
-
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span> 
|
|
1360
|
-
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span> 
|
|
1361
|
-
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span> 
|
|
1362
|
-
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> 
|
|
1363
|
-
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span> 
|
|
1364
|
-
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span> }</div>
|
|
1332
|
+
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = int2Ptrce->getOperand(0);</div>
|
|
1333
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(opnd);</div>
|
|
1334
|
+
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div>
|
|
1335
|
+
<div class="line"><a name="l00446"></a><span class="lineno"> 446</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>
|
|
1336
|
+
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  {</div>
|
|
1337
|
+
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ptr2Intce);</div>
|
|
1338
|
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = ptr2Intce->getOperand(0);</div>
|
|
1339
|
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(opnd);</div>
|
|
1340
|
+
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div>
|
|
1341
|
+
<div class="line"><a name="l00452"></a><span class="lineno"> 452</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>
|
|
1342
|
+
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  {</div>
|
|
1343
|
+
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div>
|
|
1344
|
+
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  }</div>
|
|
1345
|
+
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a35b36394af726c679fe2c1b6051db7c4">isBinaryConstantExpr</a>(ref))</div>
|
|
1346
|
+
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  {</div>
|
|
1347
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div>
|
|
1348
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  }</div>
|
|
1349
|
+
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a215cc9fd716798bbb7f96f5b64e01349">isUnaryConstantExpr</a>(ref))</div>
|
|
1350
|
+
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  {</div>
|
|
1351
|
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="comment">// we don't handle unary constant expression like fneg(x) now</span></div>
|
|
1352
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div>
|
|
1353
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  }</div>
|
|
1354
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantAggregate>(ref))</div>
|
|
1355
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  {</div>
|
|
1356
|
+
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="comment">// we don't handle constant aggregate like constant vectors</span></div>
|
|
1357
|
+
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div>
|
|
1358
|
+
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  }</div>
|
|
1359
|
+
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">else</span></div>
|
|
1360
|
+
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  {</div>
|
|
1361
|
+
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  assert(!SVFUtil::isa<ConstantExpr>(val) &&</div>
|
|
1362
|
+
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="stringliteral">"we don't handle all other constant expression for now!"</span>);</div>
|
|
1363
|
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(ref);</div>
|
|
1364
|
+
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  }</div>
|
|
1365
|
+
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div>
|
|
1366
|
+
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span> }</div>
|
|
1365
1367
|
</div><!-- fragment -->
|
|
1366
1368
|
</div>
|
|
1367
1369
|
</div>
|
|
@@ -1392,41 +1394,41 @@ Friends</h2></td></tr>
|
|
|
1392
1394
|
<p>Handle constant expression. </p>
|
|
1393
1395
|
<p>Handle global constant expression </p>
|
|
1394
1396
|
|
|
1395
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
1396
|
-
<div class="fragment"><div class="line"><a name="
|
|
1397
|
-
<div class="line"><a name="
|
|
1398
|
-
<div class="line"><a name="
|
|
1399
|
-
<div class="line"><a name="
|
|
1400
|
-
<div class="line"><a name="
|
|
1401
|
-
<div class="line"><a name="
|
|
1402
|
-
<div class="line"><a name="
|
|
1403
|
-
<div class="line"><a name="
|
|
1404
|
-
<div class="line"><a name="
|
|
1405
|
-
<div class="line"><a name="
|
|
1406
|
-
<div class="line"><a name="
|
|
1407
|
-
<div class="line"><a name="
|
|
1408
|
-
<div class="line"><a name="
|
|
1409
|
-
<div class="line"><a name="
|
|
1410
|
-
<div class="line"><a name="
|
|
1411
|
-
<div class="line"><a name="
|
|
1412
|
-
<div class="line"><a name="
|
|
1413
|
-
<div class="line"><a name="
|
|
1414
|
-
<div class="line"><a name="
|
|
1415
|
-
<div class="line"><a name="
|
|
1416
|
-
<div class="line"><a name="
|
|
1417
|
-
<div class="line"><a name="
|
|
1418
|
-
<div class="line"><a name="
|
|
1419
|
-
<div class="line"><a name="
|
|
1420
|
-
<div class="line"><a name="
|
|
1421
|
-
<div class="line"><a name="
|
|
1422
|
-
<div class="line"><a name="
|
|
1423
|
-
<div class="line"><a name="
|
|
1424
|
-
<div class="line"><a name="
|
|
1425
|
-
<div class="line"><a name="
|
|
1426
|
-
<div class="line"><a name="
|
|
1427
|
-
<div class="line"><a name="
|
|
1428
|
-
<div class="line"><a name="
|
|
1429
|
-
<div class="line"><a name="
|
|
1397
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00482">482</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
1398
|
+
<div class="fragment"><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> {</div>
|
|
1399
|
+
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  assert(G);</div>
|
|
1400
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  </div>
|
|
1401
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="comment">//The type this global points to</span></div>
|
|
1402
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T = G->getValueType();</div>
|
|
1403
|
+
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordtype">bool</span> is_array = 0;</div>
|
|
1404
|
+
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="comment">//An array is considered a single variable of its type.</span></div>
|
|
1405
|
+
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* AT = SVFUtil::dyn_cast<ArrayType>(T))</div>
|
|
1406
|
+
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  {</div>
|
|
1407
|
+
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  T = AT->getElementType();</div>
|
|
1408
|
+
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  is_array = <span class="keyword">true</span>;</div>
|
|
1409
|
+
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  }</div>
|
|
1410
|
+
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  </div>
|
|
1411
|
+
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType>(T))</div>
|
|
1412
|
+
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  {</div>
|
|
1413
|
+
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="comment">//A struct may be used in constant GEP expr.</span></div>
|
|
1414
|
+
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">User</a>* user : G->users())</div>
|
|
1415
|
+
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  {</div>
|
|
1416
|
+
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(user);</div>
|
|
1417
|
+
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  }</div>
|
|
1418
|
+
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  }</div>
|
|
1419
|
+
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (is_array)</div>
|
|
1420
|
+
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  {</div>
|
|
1421
|
+
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">User</a>* user : G->users())</div>
|
|
1422
|
+
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  {</div>
|
|
1423
|
+
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(user);</div>
|
|
1424
|
+
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  }</div>
|
|
1425
|
+
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  }</div>
|
|
1426
|
+
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  </div>
|
|
1427
|
+
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">if</span> (G->hasInitializer())</div>
|
|
1428
|
+
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  {</div>
|
|
1429
|
+
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(G->getInitializer());</div>
|
|
1430
|
+
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  }</div>
|
|
1431
|
+
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span> }</div>
|
|
1430
1432
|
</div><!-- fragment -->
|
|
1431
1433
|
</div>
|
|
1432
1434
|
</div>
|
|
@@ -1455,60 +1457,60 @@ Friends</h2></td></tr>
|
|
|
1455
1457
|
</div><div class="memdoc">
|
|
1456
1458
|
<p>Handle global variable initialization </p>
|
|
1457
1459
|
|
|
1458
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
1459
|
-
<div class="fragment"><div class="line"><a name="
|
|
1460
|
-
<div class="line"><a name="
|
|
1461
|
-
<div class="line"><a name="
|
|
1462
|
-
<div class="line"><a name="
|
|
1463
|
-
<div class="line"><a name="
|
|
1464
|
-
<div class="line"><a name="
|
|
1465
|
-
<div class="line"><a name="
|
|
1466
|
-
<div class="line"><a name="
|
|
1467
|
-
<div class="line"><a name="
|
|
1468
|
-
<div class="line"><a name="
|
|
1469
|
-
<div class="line"><a name="
|
|
1470
|
-
<div class="line"><a name="
|
|
1471
|
-
<div class="line"><a name="
|
|
1472
|
-
<div class="line"><a name="
|
|
1473
|
-
<div class="line"><a name="
|
|
1474
|
-
<div class="line"><a name="
|
|
1475
|
-
<div class="line"><a name="
|
|
1476
|
-
<div class="line"><a name="
|
|
1477
|
-
<div class="line"><a name="
|
|
1478
|
-
<div class="line"><a name="
|
|
1479
|
-
<div class="line"><a name="
|
|
1480
|
-
<div class="line"><a name="
|
|
1481
|
-
<div class="line"><a name="
|
|
1482
|
-
<div class="line"><a name="
|
|
1483
|
-
<div class="line"><a name="
|
|
1484
|
-
<div class="line"><a name="
|
|
1485
|
-
<div class="line"><a name="
|
|
1486
|
-
<div class="line"><a name="
|
|
1487
|
-
<div class="line"><a name="
|
|
1488
|
-
<div class="line"><a name="
|
|
1489
|
-
<div class="line"><a name="
|
|
1490
|
-
<div class="line"><a name="
|
|
1491
|
-
<div class="line"><a name="
|
|
1492
|
-
<div class="line"><a name="
|
|
1493
|
-
<div class="line"><a name="
|
|
1494
|
-
<div class="line"><a name="
|
|
1495
|
-
<div class="line"><a name="
|
|
1496
|
-
<div class="line"><a name="
|
|
1497
|
-
<div class="line"><a name="
|
|
1498
|
-
<div class="line"><a name="
|
|
1499
|
-
<div class="line"><a name="
|
|
1500
|
-
<div class="line"><a name="
|
|
1501
|
-
<div class="line"><a name="
|
|
1502
|
-
<div class="line"><a name="
|
|
1503
|
-
<div class="line"><a name="
|
|
1504
|
-
<div class="line"><a name="
|
|
1505
|
-
<div class="line"><a name="
|
|
1506
|
-
<div class="line"><a name="
|
|
1507
|
-
<div class="line"><a name="
|
|
1508
|
-
<div class="line"><a name="
|
|
1509
|
-
<div class="line"><a name="
|
|
1510
|
-
<div class="line"><a name="
|
|
1511
|
-
<div class="line"><a name="
|
|
1460
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00521">521</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
1461
|
+
<div class="fragment"><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> {</div>
|
|
1462
|
+
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  </div>
|
|
1463
|
+
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="keywordflow">if</span> (C->getType()->isSingleValueType())</div>
|
|
1464
|
+
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  {</div>
|
|
1465
|
+
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* E = SVFUtil::dyn_cast<ConstantExpr>(C))</div>
|
|
1466
|
+
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  {</div>
|
|
1467
|
+
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(E);</div>
|
|
1468
|
+
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div>
|
|
1469
|
+
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">else</span></div>
|
|
1470
|
+
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  {</div>
|
|
1471
|
+
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(C);</div>
|
|
1472
|
+
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  }</div>
|
|
1473
|
+
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  }</div>
|
|
1474
|
+
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantArray>(C))</div>
|
|
1475
|
+
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  {</div>
|
|
1476
|
+
<div class="line"><a name="l00537"></a><span class="lineno"> 537</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>
|
|
1477
|
+
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  {</div>
|
|
1478
|
+
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(SVFUtil::cast<Constant>(C->getOperand(i)));</div>
|
|
1479
|
+
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  }</div>
|
|
1480
|
+
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  }</div>
|
|
1481
|
+
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantStruct>(C))</div>
|
|
1482
|
+
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  {</div>
|
|
1483
|
+
<div class="line"><a name="l00544"></a><span class="lineno"> 544</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>
|
|
1484
|
+
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  {</div>
|
|
1485
|
+
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(SVFUtil::cast<Constant>(C->getOperand(i)));</div>
|
|
1486
|
+
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  }</div>
|
|
1487
|
+
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  }</div>
|
|
1488
|
+
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* data = SVFUtil::dyn_cast<ConstantData>(C))</div>
|
|
1489
|
+
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  {</div>
|
|
1490
|
+
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a18dd95e01a50aa82165c46a3801053c5">Options::ModelConsts</a>())</div>
|
|
1491
|
+
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  {</div>
|
|
1492
|
+
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a>* seq =</div>
|
|
1493
|
+
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  SVFUtil::dyn_cast<ConstantDataSequential>(data))</div>
|
|
1494
|
+
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  {</div>
|
|
1495
|
+
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">for</span>(<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i < seq->getNumElements(); i++)</div>
|
|
1496
|
+
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  {</div>
|
|
1497
|
+
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ct = seq->getElementAsConstant(i);</div>
|
|
1498
|
+
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(ct);</div>
|
|
1499
|
+
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  }</div>
|
|
1500
|
+
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  }</div>
|
|
1501
|
+
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">else</span></div>
|
|
1502
|
+
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  {</div>
|
|
1503
|
+
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  assert(</div>
|
|
1504
|
+
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  (SVFUtil::isa<ConstantAggregateZero, UndefValue>(data)) &&</div>
|
|
1505
|
+
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="stringliteral">"Single value type data should have been handled!"</span>);</div>
|
|
1506
|
+
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  }</div>
|
|
1507
|
+
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  }</div>
|
|
1508
|
+
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  }</div>
|
|
1509
|
+
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">else</span></div>
|
|
1510
|
+
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  {</div>
|
|
1511
|
+
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="comment">//TODO:assert(SVFUtil::isa<ConstantVector>(C),"what else do we have");</span></div>
|
|
1512
|
+
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  }</div>
|
|
1513
|
+
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span> }</div>
|
|
1512
1514
|
</div><!-- fragment -->
|
|
1513
1515
|
</div>
|
|
1514
1516
|
</div>
|
|
@@ -1538,10 +1540,10 @@ Friends</h2></td></tr>
|
|
|
1538
1540
|
|
|
1539
1541
|
<p>Forward collect all possible infer sites starting from a value. </p>
|
|
1540
1542
|
|
|
1541
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
1542
|
-
<div class="fragment"><div class="line"><a name="
|
|
1543
|
-
<div class="line"><a name="
|
|
1544
|
-
<div class="line"><a name="
|
|
1543
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00582">582</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
1544
|
+
<div class="fragment"><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> {</div>
|
|
1545
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a4eebcc8dc7f23ead07c64bf523d0e68e">getTypeInference</a>()-><a class="code" href="classSVF_1_1ObjTypeInference.html#ae905a7d3f1b211fbaaf9e703b1f44482">inferObjType</a>(startValue);</div>
|
|
1546
|
+
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span> }</div>
|
|
1545
1547
|
</div><!-- fragment -->
|
|
1546
1548
|
</div>
|
|
1547
1549
|
</div>
|
|
@@ -1572,41 +1574,41 @@ Friends</h2></td></tr>
|
|
|
1572
1574
|
<p>Get the reference type of heap/static object from an allocation site. </p>
|
|
1573
1575
|
<p>Return the type of the object from a heap allocation </p>
|
|
1574
1576
|
|
|
1575
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
1576
|
-
<div class="fragment"><div class="line"><a name="
|
|
1577
|
-
<div class="line"><a name="
|
|
1578
|
-
<div class="line"><a name="
|
|
1579
|
-
<div class="line"><a name="
|
|
1580
|
-
<div class="line"><a name="
|
|
1581
|
-
<div class="line"><a name="
|
|
1582
|
-
<div class="line"><a name="
|
|
1583
|
-
<div class="line"><a name="
|
|
1584
|
-
<div class="line"><a name="
|
|
1585
|
-
<div class="line"><a name="
|
|
1586
|
-
<div class="line"><a name="
|
|
1587
|
-
<div class="line"><a name="
|
|
1588
|
-
<div class="line"><a name="
|
|
1589
|
-
<div class="line"><a name="
|
|
1590
|
-
<div class="line"><a name="
|
|
1591
|
-
<div class="line"><a name="
|
|
1592
|
-
<div class="line"><a name="
|
|
1593
|
-
<div class="line"><a name="
|
|
1594
|
-
<div class="line"><a name="
|
|
1595
|
-
<div class="line"><a name="
|
|
1596
|
-
<div class="line"><a name="
|
|
1597
|
-
<div class="line"><a name="
|
|
1598
|
-
<div class="line"><a name="
|
|
1599
|
-
<div class="line"><a name="
|
|
1600
|
-
<div class="line"><a name="
|
|
1601
|
-
<div class="line"><a name="
|
|
1602
|
-
<div class="line"><a name="
|
|
1603
|
-
<div class="line"><a name="
|
|
1604
|
-
<div class="line"><a name="
|
|
1605
|
-
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  </div>
|
|
1606
|
-
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a4eebcc8dc7f23ead07c64bf523d0e68e">getTypeInference</a>()-><a class="code" href="classSVF_1_1ObjTypeInference.html#a99eaaef89f214fc8587349361600b44d">typeSizeDiffTest</a>(originalPType, inferedType, startValue);</div>
|
|
1577
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00590">590</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
1578
|
+
<div class="fragment"><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> {</div>
|
|
1579
|
+
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* startValue = inst;</div>
|
|
1580
|
+
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *originalPType = SVFUtil::dyn_cast<PointerType>(inst->getType());</div>
|
|
1581
|
+
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* inferedType = <span class="keyword">nullptr</span>;</div>
|
|
1582
|
+
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  assert(originalPType && <span class="stringliteral">"empty type?"</span>);</div>
|
|
1583
|
+
<div class="line"><a name="l00596"></a><span class="lineno"> 596</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>
|
|
1584
|
+
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfinst))</div>
|
|
1585
|
+
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  {</div>
|
|
1586
|
+
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* v = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">getFirstUseViaCastInst</a>(inst))</div>
|
|
1587
|
+
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  {</div>
|
|
1588
|
+
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *newTy = SVFUtil::dyn_cast<PointerType>(v->getType()))</div>
|
|
1589
|
+
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  {</div>
|
|
1590
|
+
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  originalPType = newTy;</div>
|
|
1591
|
+
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  }</div>
|
|
1592
|
+
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  }</div>
|
|
1593
|
+
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  inferedType = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a41ca5dded625c26b0905192ee5c4ecb3">inferObjType</a>(startValue);</div>
|
|
1594
|
+
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  }</div>
|
|
1595
|
+
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVFUtil::isHeapAllocExtCallViaArg</a>(svfinst))</div>
|
|
1596
|
+
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  {</div>
|
|
1597
|
+
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">LLVMUtil::getLLVMCallSite</a>(inst);</div>
|
|
1598
|
+
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordtype">int</span> arg_pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVFUtil::getHeapAllocHoldingArgPosition</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(svfinst));</div>
|
|
1599
|
+
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* arg = cs->getArgOperand(arg_pos);</div>
|
|
1600
|
+
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  originalPType = SVFUtil::dyn_cast<PointerType>(arg->getType());</div>
|
|
1601
|
+
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  inferedType = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a41ca5dded625c26b0905192ee5c4ecb3">inferObjType</a>(startValue = arg);</div>
|
|
1602
|
+
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  }</div>
|
|
1603
|
+
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordflow">else</span></div>
|
|
1604
|
+
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  {</div>
|
|
1605
|
+
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  assert( <span class="keyword">false</span> && <span class="stringliteral">"not a heap allocation instruction?"</span>);</div>
|
|
1606
|
+
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  }</div>
|
|
1607
1607
|
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  </div>
|
|
1608
|
-
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <
|
|
1609
|
-
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span> 
|
|
1608
|
+
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a4eebcc8dc7f23ead07c64bf523d0e68e">getTypeInference</a>()-><a class="code" href="classSVF_1_1ObjTypeInference.html#a99eaaef89f214fc8587349361600b44d">typeSizeDiffTest</a>(originalPType, inferedType, startValue);</div>
|
|
1609
|
+
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  </div>
|
|
1610
|
+
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">return</span> inferedType;</div>
|
|
1611
|
+
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span> }</div>
|
|
1610
1612
|
</div><!-- fragment -->
|
|
1611
1613
|
</div>
|
|
1612
1614
|
</div>
|
|
@@ -1658,86 +1660,86 @@ Friends</h2></td></tr>
|
|
|
1658
1660
|
<p>if val is GlobalVar, byteSize is Type's LLVM ByteSize All GlobalVariable must have constant size</p>
|
|
1659
1661
|
<p>if val is heap alloc</p>
|
|
1660
1662
|
|
|
1661
|
-
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#
|
|
1662
|
-
<div class="fragment"><div class="line"><a name="
|
|
1663
|
-
<div class="line"><a name="
|
|
1664
|
-
<div class="line"><a name="
|
|
1665
|
-
<div class="line"><a name="
|
|
1666
|
-
<div class="line"><a name="
|
|
1667
|
-
<div class="line"><a name="
|
|
1668
|
-
<div class="line"><a name="
|
|
1669
|
-
<div class="line"><a name="
|
|
1670
|
-
<div class="line"><a name="
|
|
1671
|
-
<div class="line"><a name="
|
|
1672
|
-
<div class="line"><a name="
|
|
1673
|
-
<div class="line"><a name="
|
|
1674
|
-
<div class="line"><a name="
|
|
1675
|
-
<div class="line"><a name="
|
|
1676
|
-
<div class="line"><a name="
|
|
1677
|
-
<div class="line"><a name="
|
|
1678
|
-
<div class="line"><a name="
|
|
1679
|
-
<div class="line"><a name="
|
|
1680
|
-
<div class="line"><a name="
|
|
1681
|
-
<div class="line"><a name="
|
|
1682
|
-
<div class="line"><a name="
|
|
1683
|
-
<div class="line"><a name="
|
|
1684
|
-
<div class="line"><a name="
|
|
1685
|
-
<div class="line"><a name="
|
|
1686
|
-
<div class="line"><a name="
|
|
1687
|
-
<div class="line"><a name="
|
|
1688
|
-
<div class="line"><a name="
|
|
1689
|
-
<div class="line"><a name="
|
|
1690
|
-
<div class="line"><a name="
|
|
1691
|
-
<div class="line"><a name="
|
|
1692
|
-
<div class="line"><a name="
|
|
1693
|
-
<div class="line"><a name="
|
|
1694
|
-
<div class="line"><a name="
|
|
1695
|
-
<div class="line"><a name="
|
|
1696
|
-
<div class="line"><a name="
|
|
1697
|
-
<div class="line"><a name="
|
|
1698
|
-
<div class="line"><a name="
|
|
1699
|
-
<div class="line"><a name="
|
|
1700
|
-
<div class="line"><a name="
|
|
1701
|
-
<div class="line"><a name="
|
|
1702
|
-
<div class="line"><a name="
|
|
1703
|
-
<div class="line"><a name="
|
|
1704
|
-
<div class="line"><a name="
|
|
1705
|
-
<div class="line"><a name="
|
|
1706
|
-
<div class="line"><a name="
|
|
1707
|
-
<div class="line"><a name="
|
|
1708
|
-
<div class="line"><a name="
|
|
1709
|
-
<div class="line"><a name="
|
|
1710
|
-
<div class="line"><a name="
|
|
1711
|
-
<div class="line"><a name="
|
|
1712
|
-
<div class="line"><a name="
|
|
1713
|
-
<div class="line"><a name="
|
|
1714
|
-
<div class="line"><a name="
|
|
1715
|
-
<div class="line"><a name="
|
|
1716
|
-
<div class="line"><a name="
|
|
1717
|
-
<div class="line"><a name="
|
|
1718
|
-
<div class="line"><a name="
|
|
1719
|
-
<div class="line"><a name="
|
|
1720
|
-
<div class="line"><a name="
|
|
1721
|
-
<div class="line"><a name="
|
|
1722
|
-
<div class="line"><a name="
|
|
1723
|
-
<div class="line"><a name="
|
|
1724
|
-
<div class="line"><a name="
|
|
1725
|
-
<div class="line"><a name="
|
|
1726
|
-
<div class="line"><a name="
|
|
1727
|
-
<div class="line"><a name="
|
|
1728
|
-
<div class="line"><a name="
|
|
1729
|
-
<div class="line"><a name="
|
|
1730
|
-
<div class="line"><a name="
|
|
1731
|
-
<div class="line"><a name="
|
|
1732
|
-
<div class="line"><a name="
|
|
1733
|
-
<div class="line"><a name="
|
|
1734
|
-
<div class="line"><a name="
|
|
1735
|
-
<div class="line"><a name="
|
|
1736
|
-
<div class="line"><a name="
|
|
1737
|
-
<div class="line"><a name="
|
|
1738
|
-
<div class="line"><a name="
|
|
1739
|
-
<div class="line"><a name="
|
|
1740
|
-
<div class="line"><a name="
|
|
1663
|
+
<p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00848">848</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
|
|
1664
|
+
<div class="fragment"><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> {</div>
|
|
1665
|
+
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  </div>
|
|
1666
|
+
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemNum = 1;</div>
|
|
1667
|
+
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="comment">// init byteSize = 0, If byteSize is changed in the following process,</span></div>
|
|
1668
|
+
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="comment">// it means that ObjTypeInfo has a Constant Byte Size</span></div>
|
|
1669
|
+
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> byteSize = 0;</div>
|
|
1670
|
+
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="comment">// Global variable</span></div>
|
|
1671
|
+
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="comment">// if val is Function Obj, byteSize is not set</span></div>
|
|
1672
|
+
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Function>(val))</div>
|
|
1673
|
+
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  {</div>
|
|
1674
|
+
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">ObjTypeInfo::FUNCTION_OBJ</a>);</div>
|
|
1675
|
+
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div>
|
|
1676
|
+
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  elemNum = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d">getNumOfElements</a>(objTy);</div>
|
|
1677
|
+
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  }</div>
|
|
1678
|
+
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3bacb4f95c73e6d794901d01c6b65a83">AllocaInst</a>* allocaInst = SVFUtil::dyn_cast<AllocaInst>(val))</div>
|
|
1679
|
+
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  {</div>
|
|
1680
|
+
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">ObjTypeInfo::STACK_OBJ</a>);</div>
|
|
1681
|
+
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div>
|
|
1682
|
+
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* sz = SVFUtil::dyn_cast<ConstantInt>(allocaInst->getArraySize()))</div>
|
|
1683
|
+
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  {</div>
|
|
1684
|
+
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  elemNum = sz->getZExtValue() * <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d">getNumOfElements</a>(objTy);</div>
|
|
1685
|
+
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  byteSize = sz->getZExtValue() * typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>()-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
|
|
1686
|
+
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  }</div>
|
|
1687
|
+
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keywordflow">else</span></div>
|
|
1688
|
+
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  {</div>
|
|
1689
|
+
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  elemNum = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d">getNumOfElements</a>(objTy);</div>
|
|
1690
|
+
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  byteSize = 0;</div>
|
|
1691
|
+
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  }</div>
|
|
1692
|
+
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  }</div>
|
|
1693
|
+
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<GlobalVariable>(val))</div>
|
|
1694
|
+
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  {</div>
|
|
1695
|
+
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">ObjTypeInfo::GLOBVAR_OBJ</a>);</div>
|
|
1696
|
+
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(val))</div>
|
|
1697
|
+
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c">ObjTypeInfo::CONST_GLOBAL_OBJ</a>);</div>
|
|
1698
|
+
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div>
|
|
1699
|
+
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  elemNum = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d">getNumOfElements</a>(objTy);</div>
|
|
1700
|
+
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  byteSize = typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>()-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
|
|
1701
|
+
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  }</div>
|
|
1702
|
+
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<Instruction>(val) &&</div>
|
|
1703
|
+
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(</div>
|
|
1704
|
+
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFInstruction(</div>
|
|
1705
|
+
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  SVFUtil::cast<Instruction>(val))))</div>
|
|
1706
|
+
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  {</div>
|
|
1707
|
+
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  elemNum = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a86e051b7423b9e6cc3c96ccddb0ad345">analyzeHeapObjType</a>(typeinfo,val);</div>
|
|
1708
|
+
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <span class="comment">// analyze heap alloc like (malloc/calloc/...), the alloc functions have</span></div>
|
|
1709
|
+
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="comment">// annotation like "AllocSize:Arg1". Please refer to extapi.c.</span></div>
|
|
1710
|
+
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="comment">// e.g. calloc(4, 10), annotation is "AllocSize:Arg0*Arg1",</span></div>
|
|
1711
|
+
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="comment">// it means byteSize = 4 (Arg0) * 10 (Arg1) = 40</span></div>
|
|
1712
|
+
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  byteSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a889af96532c273bb91f59abf6433b04c">analyzeHeapAllocByteSize</a>(val);</div>
|
|
1713
|
+
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  }</div>
|
|
1714
|
+
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#adad59a953dd81e213db71babbbc9df2f">ArgInProgEntryFunction</a>(val))</div>
|
|
1715
|
+
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  {</div>
|
|
1716
|
+
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">analyzeStaticObjType</a>(typeinfo,val);</div>
|
|
1717
|
+
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="comment">// user input data, label its field as infinite here</span></div>
|
|
1718
|
+
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  elemNum = typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div>
|
|
1719
|
+
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  byteSize = typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>()-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
|
|
1720
|
+
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  }</div>
|
|
1721
|
+
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
|
|
1722
|
+
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  {</div>
|
|
1723
|
+
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e">ObjTypeInfo::CONST_DATA</a>);</div>
|
|
1724
|
+
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  elemNum = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a603cf580467b32df5fad94ade3287b0f">getNumOfFlattenElements</a>(val->getType());</div>
|
|
1725
|
+
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  byteSize = typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>()-><a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
|
|
1726
|
+
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  }</div>
|
|
1727
|
+
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="keywordflow">else</span></div>
|
|
1728
|
+
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  {</div>
|
|
1729
|
+
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  assert(<span class="stringliteral">"what other object do we have??"</span>);</div>
|
|
1730
|
+
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  abort();</div>
|
|
1731
|
+
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  }</div>
|
|
1732
|
+
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  </div>
|
|
1733
|
+
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div>
|
|
1734
|
+
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordflow">if</span>(typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() > elemNum)</div>
|
|
1735
|
+
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#aff17d13e520a731accedd06350af6221">setNumOfElements</a>(elemNum);</div>
|
|
1736
|
+
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  </div>
|
|
1737
|
+
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <span class="comment">// set ByteSize. If ByteSize > 0, this typeinfo has constant type.</span></div>
|
|
1738
|
+
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="comment">// If ByteSize == 0, this typeinfo has 1) zero byte 2) non-const byte size</span></div>
|
|
1739
|
+
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <span class="comment">// If ByteSize>MaxFieldLimit, set MaxFieldLimit to the byteSize;</span></div>
|
|
1740
|
+
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  byteSize = <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() > byteSize? byteSize: <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
|
|
1741
|
+
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  typeinfo-><a class="code" href="classSVF_1_1ObjTypeInfo.html#ac093156bfb46c07675ae201f449cdca0">setByteSizeOfObj</a>(byteSize);</div>
|
|
1742
|
+
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span> }</div>
|
|
1741
1743
|
</div><!-- fragment -->
|
|
1742
1744
|
</div>
|
|
1743
1745
|
</div>
|
|
@@ -1801,7 +1803,7 @@ Friends</h2></td></tr>
|
|
|
1801
1803
|
<div class="ttc" id="aclassSVF_1_1SVFType_html_a95b8031f1e15d49c7d68628be1d05aae"><div class="ttname"><a href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">SVF::SVFType::getByteSize</a></div><div class="ttdeci">u32_t getByteSize() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00244">SVFType.h:244</a></div></div>
|
|
1802
1804
|
<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>
|
|
1803
1805
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a4af4db2fe43846609d2ed1d7022b1be1"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4af4db2fe43846609d2ed1d7022b1be1">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00188">SVFUtil.h:188</a></div></div>
|
|
1804
|
-
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_afe2806a0aef240ab313975decfe362f7"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">SVF::SymbolTableBuilder::analyzeStaticObjType</a></div><div class="ttdeci">void analyzeStaticObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of heap and static objects.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
1806
|
+
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_afe2806a0aef240ab313975decfe362f7"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">SVF::SymbolTableBuilder::analyzeStaticObjType</a></div><div class="ttdeci">void analyzeStaticObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of heap and static objects.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00832">SymbolTableBuilder.cpp:832</a></div></div>
|
|
1805
1807
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a9f4cf6914b400b9f69c7852f13c496a9"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">SVF::SymbolTableInfo::dump</a></div><div class="ttdeci">virtual void dump()</div><div class="ttdoc">Another debug method.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00325">SymbolTableInfo.cpp:325</a></div></div>
|
|
1806
1808
|
<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>
|
|
1807
1809
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_aeab14702eabde827923a692cba8f7f8a"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">SVF::SymbolTableInfo::objMap</a></div><div class="ttdeci">IDToMemMapTy objMap</div><div class="ttdoc">map a memory sym id to its obj</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00086">SymbolTableInfo.h:86</a></div></div>
|
|
@@ -1818,11 +1820,11 @@ Friends</h2></td></tr>
|
|
|
1818
1820
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e">SVF::ObjTypeInfo::CONST_DATA</a></div><div class="ttdeci">@ CONST_DATA</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00497">SymbolTableInfo.h:497</a></div></div>
|
|
1819
1821
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a4e1785295e2695fae72758d8bbe4f7ac"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a4e1785295e2695fae72758d8bbe4f7ac">SVF::cppUtil::classTyHasVTable</a></div><div class="ttdeci">bool classTyHasVTable(const StructType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00504">CppUtil.cpp:504</a></div></div>
|
|
1820
1822
|
<div class="ttc" id="anamespaceSVF_html_aad5d26ab07a5d1314bdb8f54e0fcdb22"><div class="ttname"><a href="namespaceSVF.html#aad5d26ab07a5d1314bdb8f54e0fcdb22">SVF::BinaryOperator</a></div><div class="ttdeci">llvm::BinaryOperator BinaryOperator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00179">BasicTypes.h:179</a></div></div>
|
|
1821
|
-
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a41ca5dded625c26b0905192ee5c4ecb3"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a41ca5dded625c26b0905192ee5c4ecb3">SVF::SymbolTableBuilder::inferObjType</a></div><div class="ttdeci">const Type * inferObjType(const Value *startValue)</div><div class="ttdoc">Forward collect all possible infer sites starting from a value.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
1823
|
+
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a41ca5dded625c26b0905192ee5c4ecb3"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a41ca5dded625c26b0905192ee5c4ecb3">SVF::SymbolTableBuilder::inferObjType</a></div><div class="ttdeci">const Type * inferObjType(const Value *startValue)</div><div class="ttdoc">Forward collect all possible infer sites starting from a value.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00582">SymbolTableBuilder.cpp:582</a></div></div>
|
|
1822
1824
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a704b917b1e1dbaf9cd758fa9acc1083b"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b">SVF::SymbolTableInfo::isConstantObj</a></div><div class="ttdeci">static bool isConstantObj(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00165">SymbolTableInfo.h:165</a></div></div>
|
|
1823
1825
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a9815a5b31ac7dc21239d08e5b9f61106"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVF::SVFUtil::getSVFCallSite</a></div><div class="ttdeci">CallSite getSVFCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Return LLVM callsite given an instruction.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
|
|
1824
1826
|
<div class="ttc" id="anamespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
|
|
1825
|
-
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a1efd9406182eb86b1ee4829c931b566d"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">SVF::SymbolTableBuilder::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
1827
|
+
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a1efd9406182eb86b1ee4829c931b566d"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">SVF::SymbolTableBuilder::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00521">SymbolTableBuilder.cpp:521</a></div></div>
|
|
1826
1828
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a200539f965bff5627abac41920498ee8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">SVF::LLVMUtil::getFirstUseViaCastInst</a></div><div class="ttdeci">const Value * getFirstUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00364">LLVMUtil.cpp:364</a></div></div>
|
|
1827
1829
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a0d7588578735679773493ff2d5e458e1"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">SVF::SVFUtil::increaseStackSize</a></div><div class="ttdeci">void increaseStackSize()</div><div class="ttdoc">Increase the stack size limit.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00227">SVFUtil.cpp:227</a></div></div>
|
|
1828
1830
|
<div class="ttc" id="aclassSVF_1_1Options_html_a320a86694c42b92d0dd599d7825c7ca4"><div class="ttname"><a href="classSVF_1_1Options.html#a320a86694c42b92d0dd599d7825c7ca4">SVF::Options::EnableTypeCheck</a></div><div class="ttdeci">static const Option< bool > EnableTypeCheck</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00131">Options.h:131</a></div></div>
|
|
@@ -1842,13 +1844,13 @@ Friends</h2></td></tr>
|
|
|
1842
1844
|
<div class="ttc" id="anamespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00048">GeneralType.h:48</a></div></div>
|
|
1843
1845
|
<div class="ttc" id="anamespacellvm_html_acfe99e9d441434240c79f6d76b73fe0a"><div class="ttname"><a href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">llvm::bridge_gep_begin</a></div><div class="ttdeci">bridge_gep_iterator bridge_gep_begin(const User *GEP)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00149">GEPTypeBridgeIterator.h:149</a></div></div>
|
|
1844
1846
|
<div class="ttc" id="anamespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00085">BasicTypes.h:85</a></div></div>
|
|
1845
|
-
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_af7aae2e2851c948f85600066a5a394ca"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#af7aae2e2851c948f85600066a5a394ca">SVF::SymbolTableBuilder::getOrAddSVFTypeInfo</a></div><div class="ttdeci">StInfo * getOrAddSVFTypeInfo(const Type *T)</div><div class="ttdoc">Get a reference to StructInfo.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
1847
|
+
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_af7aae2e2851c948f85600066a5a394ca"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#af7aae2e2851c948f85600066a5a394ca">SVF::SymbolTableBuilder::getOrAddSVFTypeInfo</a></div><div class="ttdeci">StInfo * getOrAddSVFTypeInfo(const Type *T)</div><div class="ttdoc">Get a reference to StructInfo.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00961">SymbolTableBuilder.cpp:961</a></div></div>
|
|
1846
1848
|
<div class="ttc" id="anamespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00146">BasicTypes.h:146</a></div></div>
|
|
1847
1849
|
<div class="ttc" id="aclassSVF_1_1Options_html_a52c06ea1c5dd347079f192f0cba3dcd3"><div class="ttname"><a href="classSVF_1_1Options.html#a52c06ea1c5dd347079f192f0cba3dcd3">SVF::Options::SymTabPrint</a></div><div class="ttdeci">static const Option< bool > SymTabPrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00209">Options.h:209</a></div></div>
|
|
1848
1850
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a94c06e5ac0b50989743a9e63c9a6d5b9"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">SVF::SymbolTableInfo::varargSymMap</a></div><div class="ttdeci">FunToIDMapTy varargSymMap</div><div class="ttdoc">vararg map</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00085">SymbolTableInfo.h:85</a></div></div>
|
|
1849
|
-
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a603cf580467b32df5fad94ade3287b0f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a603cf580467b32df5fad94ade3287b0f">SVF::SymbolTableBuilder::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements(const Type *T)</div><div class="ttdoc">Number of flattened elements of an array or struct.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
1851
|
+
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a603cf580467b32df5fad94ade3287b0f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a603cf580467b32df5fad94ade3287b0f">SVF::SymbolTableBuilder::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements(const Type *T)</div><div class="ttdoc">Number of flattened elements of an array or struct.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00953">SymbolTableBuilder.cpp:953</a></div></div>
|
|
1850
1852
|
<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>
|
|
1851
|
-
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a674b84d529c762af3a45e7d4ce4d543d"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d">SVF::SymbolTableBuilder::getNumOfElements</a></div><div class="ttdeci">u32_t getNumOfElements(const Type *ety)</div><div class="ttdoc">Return size of this object based on LLVM value.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
1853
|
+
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a674b84d529c762af3a45e7d4ce4d543d"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d">SVF::SymbolTableBuilder::getNumOfElements</a></div><div class="ttdeci">u32_t getNumOfElements(const Type *ety)</div><div class="ttdoc">Return size of this object based on LLVM value.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00941">SymbolTableBuilder.cpp:941</a></div></div>
|
|
1852
1854
|
<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>
|
|
1853
1855
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03">SVF::SymbolTableInfo::BlkPtr</a></div><div class="ttdeci">@ BlkPtr</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00059">SymbolTableInfo.h:59</a></div></div>
|
|
1854
1856
|
<div class="ttc" id="anamespaceSVF_html_a5a6e8ab900d5cd17ef72661006a7fbe0"><div class="ttname"><a href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">SVF::LoadInst</a></div><div class="ttdeci">llvm::LoadInst LoadInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
|
|
@@ -1861,7 +1863,7 @@ Friends</h2></td></tr>
|
|
|
1861
1863
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a067bd6dbaf74a028d546fa56b095791b"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">SVF::SVFFunction::getAnnotations</a></div><div class="ttdeci">const std::vector< std::string > & getAnnotations() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00466">SVFValue.h:466</a></div></div>
|
|
1862
1864
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a99eaaef89f214fc8587349361600b44d"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a99eaaef89f214fc8587349361600b44d">SVF::ObjTypeInference::typeSizeDiffTest</a></div><div class="ttdeci">void typeSizeDiffTest(const PointerType *oPTy, const Type *iTy, const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00563">ObjTypeInference.cpp:563</a></div></div>
|
|
1863
1865
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac1a9d20d62066ec4e181fad223669e32"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">SVF::LLVMModuleSet::getContext</a></div><div class="ttdeci">LLVMContext & getContext() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00344">LLVMModule.h:344</a></div></div>
|
|
1864
|
-
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a4eebcc8dc7f23ead07c64bf523d0e68e"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a4eebcc8dc7f23ead07c64bf523d0e68e">SVF::SymbolTableBuilder::getTypeInference</a></div><div class="ttdeci">ObjTypeInference * getTypeInference()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
1866
|
+
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a4eebcc8dc7f23ead07c64bf523d0e68e"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a4eebcc8dc7f23ead07c64bf523d0e68e">SVF::SymbolTableBuilder::getTypeInference</a></div><div class="ttdeci">ObjTypeInference * getTypeInference()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00576">SymbolTableBuilder.cpp:576</a></div></div>
|
|
1865
1867
|
<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>
|
|
1866
1868
|
<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>
|
|
1867
1869
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html">SVF::ObjTypeInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00478">SymbolTableInfo.h:478</a></div></div>
|
|
@@ -1899,26 +1901,26 @@ Friends</h2></td></tr>
|
|
|
1899
1901
|
<div class="ttc" id="aclassSVF_1_1SVFType_html_a05850c17c2dbe42e5602dc8c9a70f3bd"><div class="ttname"><a href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">SVF::SVFType::getTypeInfo</a></div><div class="ttdeci">StInfo * getTypeInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00230">SVFType.h:230</a></div></div>
|
|
1900
1902
|
<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>
|
|
1901
1903
|
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a2f5321b9a76ea833650f1391ecd8de5f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a2f5321b9a76ea833650f1391ecd8de5f">SVF::SymbolTableBuilder::collectRet</a></div><div class="ttdeci">void collectRet(const Function *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00354">SymbolTableBuilder.cpp:354</a></div></div>
|
|
1902
|
-
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a86e051b7423b9e6cc3c96ccddb0ad345"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a86e051b7423b9e6cc3c96ccddb0ad345">SVF::SymbolTableBuilder::analyzeHeapObjType</a></div><div class="ttdeci">u32_t analyzeHeapObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of heap and static objects.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
1904
|
+
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a86e051b7423b9e6cc3c96ccddb0ad345"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a86e051b7423b9e6cc3c96ccddb0ad345">SVF::SymbolTableBuilder::analyzeHeapObjType</a></div><div class="ttdeci">u32_t analyzeHeapObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of heap and static objects.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00809">SymbolTableBuilder.cpp:809</a></div></div>
|
|
1903
1905
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">SVF::ObjTypeInfo::CONST_ARRAY_OBJ</a></div><div class="ttdeci">@ CONST_ARRAY_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00495">SymbolTableInfo.h:495</a></div></div>
|
|
1904
1906
|
<div class="ttc" id="aclassSVF_1_1Options_html_a429c3000ee2ac45119b8c241aa06762c"><div class="ttname"><a href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">SVF::Options::ModelArrays</a></div><div class="ttdeci">static const Option< bool > ModelArrays</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00207">Options.h:207</a></div></div>
|
|
1905
1907
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a5840b742ed8c73ece548b9b4aede07ec"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">SVF::SymbolTableInfo::objSymMap</a></div><div class="ttdeci">ValueToIDMapTy objSymMap</div><div class="ttdoc">map a obj reference to its sym id</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00083">SymbolTableInfo.h:83</a></div></div>
|
|
1906
|
-
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_af5c882c10cd46c669c5aededbdb510d8"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">SVF::SymbolTableBuilder::analyzeObjType</a></div><div class="ttdeci">void analyzeObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of all flattened fields of this object.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
1908
|
+
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_af5c882c10cd46c669c5aededbdb510d8"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">SVF::SymbolTableBuilder::analyzeObjType</a></div><div class="ttdeci">void analyzeObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of all flattened fields of this object.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00698">SymbolTableBuilder.cpp:698</a></div></div>
|
|
1907
1909
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a73215bac62f1340a58f6c7f2ba9b0e7b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVF::SVFUtil::getHeapAllocHoldingArgPosition</a></div><div class="ttdeci">int getHeapAllocHoldingArgPosition(const SVFFunction *fun)</div><div class="ttdoc">Get the position of argument that holds an allocated heap object.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00340">SVFUtil.h:340</a></div></div>
|
|
1908
1910
|
<div class="ttc" id="anamespaceSVF_html_ac4e93e1fec646ff222940a663843921b"><div class="ttname"><a href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">SVF::GetElementPtrInst</a></div><div class="ttdeci">llvm::GetElementPtrInst GetElementPtrInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00162">BasicTypes.h:162</a></div></div>
|
|
1909
1911
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">SVF::ObjTypeInfo::FUNCTION_OBJ</a></div><div class="ttdeci">@ FUNCTION_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00487">SymbolTableInfo.h:487</a></div></div>
|
|
1910
1912
|
<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>
|
|
1911
1913
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a610a7777a48132caadec167c8109f044"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a610a7777a48132caadec167c8109f044">SVF::LLVMModuleSet::getLLVMType</a></div><div class="ttdeci">const Type * getLLVMType(const SVFType *T) const</div><div class="ttdoc">Get LLVM Type.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01359">LLVMModule.cpp:1359</a></div></div>
|
|
1912
1914
|
<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>
|
|
1913
|
-
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a31190ba1934f945abe8a1b4fcbb636b3"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a31190ba1934f945abe8a1b4fcbb636b3">SVF::SymbolTableBuilder::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Value *val)</div><div class="ttdoc">Create an objectInfo based on LLVM value.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
1915
|
+
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a31190ba1934f945abe8a1b4fcbb636b3"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a31190ba1934f945abe8a1b4fcbb636b3">SVF::SymbolTableBuilder::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Value *val)</div><div class="ttdoc">Create an objectInfo based on LLVM value.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00629">SymbolTableBuilder.cpp:629</a></div></div>
|
|
1914
1916
|
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a5db9e476132b0a653c7995b61def4065"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a5db9e476132b0a653c7995b61def4065">SVF::SymbolTableBuilder::createBlkObj</a></div><div class="ttdeci">MemObj * createBlkObj(SymID symId)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00047">SymbolTableBuilder.cpp:47</a></div></div>
|
|
1915
1917
|
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_abe39a7a3557899b4991bcc60d436dc50"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">SVF::SymbolTableBuilder::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00388">SymbolTableBuilder.cpp:388</a></div></div>
|
|
1916
1918
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_ad9cdb21e20182f3bc95f04bbb97712f3"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">SVF::SymbolTableInfo::isBlkObj</a></div><div class="ttdeci">static bool isBlkObj(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00161">SymbolTableInfo.h:161</a></div></div>
|
|
1917
1919
|
<div class="ttc" id="anamespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00124">BasicTypes.h:124</a></div></div>
|
|
1918
1920
|
<div class="ttc" id="anamespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
|
|
1919
|
-
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a72732ec0392d9d5b900fc12177890779"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a72732ec0392d9d5b900fc12177890779">SVF::SymbolTableBuilder::handleGlobalCE</a></div><div class="ttdeci">void handleGlobalCE(const GlobalVariable *G)</div><div class="ttdoc">Handle constant expression.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
1921
|
+
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a72732ec0392d9d5b900fc12177890779"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a72732ec0392d9d5b900fc12177890779">SVF::SymbolTableBuilder::handleGlobalCE</a></div><div class="ttdeci">void handleGlobalCE(const GlobalVariable *G)</div><div class="ttdoc">Handle constant expression.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00482">SymbolTableBuilder.cpp:482</a></div></div>
|
|
1920
1922
|
<div class="ttc" id="anamespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00147">BasicTypes.h:147</a></div></div>
|
|
1921
|
-
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a889af96532c273bb91f59abf6433b04c"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a889af96532c273bb91f59abf6433b04c">SVF::SymbolTableBuilder::analyzeHeapAllocByteSize</a></div><div class="ttdeci">u32_t analyzeHeapAllocByteSize(const Value *val)</div><div class="ttdoc">Analyze byte size of heap alloc function (e.g. malloc/calloc/...)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
1923
|
+
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a889af96532c273bb91f59abf6433b04c"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a889af96532c273bb91f59abf6433b04c">SVF::SymbolTableBuilder::analyzeHeapAllocByteSize</a></div><div class="ttdeci">u32_t analyzeHeapAllocByteSize(const Value *val)</div><div class="ttdoc">Analyze byte size of heap alloc function (e.g. malloc/calloc/...)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00739">SymbolTableBuilder.cpp:739</a></div></div>
|
|
1922
1924
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c">SVF::ObjTypeInfo::CONST_GLOBAL_OBJ</a></div><div class="ttdeci">@ CONST_GLOBAL_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00496">SymbolTableInfo.h:496</a></div></div>
|
|
1923
1925
|
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a42c69bc9ee71cc0ff322c1701b7e07bd"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a42c69bc9ee71cc0ff322c1701b7e07bd">SVF::SymbolTableBuilder::collectSVFTypeInfo</a></div><div class="ttdeci">void collectSVFTypeInfo(const Value *val)</div><div class="ttdoc">collect the syms</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00240">SymbolTableBuilder.cpp:240</a></div></div>
|
|
1924
1926
|
<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>
|
|
@@ -1945,7 +1947,7 @@ Friends</h2></td></tr>
|
|
|
1945
1947
|
<div class="ttc" id="aSVFType_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DBUG model of each pass.</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00484">SVFType.h:484</a></div></div>
|
|
1946
1948
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a5054f95a7b77257ffb283044aab17b08"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">SVF::SymbolTableInfo::valSymMap</a></div><div class="ttdeci">ValueToIDMapTy valSymMap</div><div class="ttdoc">map a value to its sym id</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00082">SymbolTableInfo.h:82</a></div></div>
|
|
1947
1949
|
<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>
|
|
1948
|
-
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_ae938564e6a36848cb848a5badc15a1de"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#ae938564e6a36848cb848a5badc15a1de">SVF::SymbolTableBuilder::initTypeInfo</a></div><div class="ttdeci">void initTypeInfo(ObjTypeInfo *typeinfo, const Value *value, const Type *ty)</div><div class="ttdoc">Initialize TypeInfo based on LLVM Value.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
1950
|
+
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_ae938564e6a36848cb848a5badc15a1de"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#ae938564e6a36848cb848a5badc15a1de">SVF::SymbolTableBuilder::initTypeInfo</a></div><div class="ttdeci">void initTypeInfo(ObjTypeInfo *typeinfo, const Value *value, const Type *ty)</div><div class="ttdoc">Initialize TypeInfo based on LLVM Value.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00848">SymbolTableBuilder.cpp:848</a></div></div>
|
|
1949
1951
|
<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>
|
|
1950
1952
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08">SVF::ObjTypeInfo::VAR_STRUCT_OBJ</a></div><div class="ttdeci">@ VAR_STRUCT_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00492">SymbolTableInfo.h:492</a></div></div>
|
|
1951
1953
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abf4e75ba6236136399d45c85be2328fe"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abf4e75ba6236136399d45c85be2328fe">SVF::LLVMUtil::isBlackholeSym</a></div><div class="ttdeci">bool isBlackholeSym(const Value *val)</div><div class="ttdoc">Check whether this value is a black hole.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00088">LLVMUtil.h:88</a></div></div>
|
|
@@ -1956,7 +1958,7 @@ Friends</h2></td></tr>
|
|
|
1956
1958
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd">SVF::ObjTypeInfo::CONST_STRUCT_OBJ</a></div><div class="ttdeci">@ CONST_STRUCT_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00494">SymbolTableInfo.h:494</a></div></div>
|
|
1957
1959
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream & errs()</div><div class="ttdoc">Overwrite llvm::errs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00056">SVFUtil.h:56</a></div></div>
|
|
1958
1960
|
<div class="ttc" id="anamespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00145">BasicTypes.h:145</a></div></div>
|
|
1959
|
-
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a19666d732a24e5e286350821b0cea109"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a19666d732a24e5e286350821b0cea109">SVF::SymbolTableBuilder::inferTypeOfHeapObjOrStaticObj</a></div><div class="ttdeci">const Type * inferTypeOfHeapObjOrStaticObj(const Instruction *inst)</div><div class="ttdoc">Get the reference type of heap/static object from an allocation site.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
1961
|
+
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a19666d732a24e5e286350821b0cea109"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a19666d732a24e5e286350821b0cea109">SVF::SymbolTableBuilder::inferTypeOfHeapObjOrStaticObj</a></div><div class="ttdeci">const Type * inferTypeOfHeapObjOrStaticObj(const Instruction *inst)</div><div class="ttdoc">Get the reference type of heap/static object from an allocation site.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00590">SymbolTableBuilder.cpp:590</a></div></div>
|
|
1960
1962
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a847fb0c433b5d3611151636ca4bc5bc5"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a847fb0c433b5d3611151636ca4bc5bc5">SVF::LLVMUtil::isNullPtrSym</a></div><div class="ttdeci">bool isNullPtrSym(const Value *val)</div><div class="ttdoc">Check whether this value is a black hole.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00094">LLVMUtil.h:94</a></div></div>
|
|
1961
1963
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab2e0196e0ce547ab4a483cc6d2646b24"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(const std::string &msg)</div><div class="ttdoc">Writes a message run through wrnMsg.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00066">SVFUtil.cpp:66</a></div></div>
|
|
1962
1964
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a81bc3d785062c7e527ecf8e564cd52a4"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">SVF::ObjTypeInfo::getMaxFieldOffsetLimit</a></div><div class="ttdeci">u32_t getMaxFieldOffsetLimit()</div><div class="ttdoc">Get max field offset limit.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00533">SymbolTableInfo.h:533</a></div></div>
|