svf-tools 1.0.809 → 1.0.810
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/AccessPath_8cpp_source.html +2 -2
- package/SVF-doxygen/html/AndersenSCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/Andersen_8cpp_source.html +4 -4
- package/SVF-doxygen/html/Andersen_8h_source.html +1 -1
- package/SVF-doxygen/html/CDGBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/CDGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/CFBasicBlockGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/CFBasicBlockGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/CFLAlias_8cpp_source.html +6 -6
- package/SVF-doxygen/html/CFLAlias_8h_source.html +1 -1
- package/SVF-doxygen/html/CHGBuilder_8cpp_source.html +13 -13
- package/SVF-doxygen/html/CHG_8cpp.html +4 -4
- package/SVF-doxygen/html/CHG_8cpp_source.html +10 -10
- package/SVF-doxygen/html/CHG_8h_source.html +2 -2
- package/SVF-doxygen/html/CallGraphBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ContextDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CxtStmt_8h_source.html +2 -2
- package/SVF-doxygen/html/DCHG_8cpp_source.html +8 -8
- package/SVF-doxygen/html/DCHG_8h_source.html +2 -2
- package/SVF-doxygen/html/DDAClient_8cpp_source.html +3 -3
- package/SVF-doxygen/html/ExtAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/FSMPTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ICFGBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/ICFGBuilder_8h_source.html +4 -4
- package/SVF-doxygen/html/ICFGEdge_8h_source.html +5 -5
- package/SVF-doxygen/html/ICFGNode_8h_source.html +12 -12
- package/SVF-doxygen/html/ICFG_8cpp_source.html +550 -543
- package/SVF-doxygen/html/ICFG_8h_source.html +19 -19
- package/SVF-doxygen/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/LLVMLoopAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/LLVMModule_8cpp_source.html +1160 -1147
- package/SVF-doxygen/html/LLVMModule_8h_source.html +29 -29
- package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +1160 -1150
- package/SVF-doxygen/html/LLVMUtil_8h.html +3 -0
- package/SVF-doxygen/html/LLVMUtil_8h_source.html +350 -347
- package/SVF-doxygen/html/LeakChecker_8cpp_source.html +3 -3
- package/SVF-doxygen/html/LockAnalysis_8cpp_source.html +14 -14
- package/SVF-doxygen/html/LockAnalysis_8h_source.html +2 -2
- package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +4 -4
- package/SVF-doxygen/html/LockResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/MHP_8cpp_source.html +12 -12
- package/SVF-doxygen/html/MHP_8h_source.html +3 -3
- package/SVF-doxygen/html/MSSAMuChi_8h_source.html +2 -2
- package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/MTAAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/MTAResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MTAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/MTA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/MemRegion_8cpp_source.html +10 -10
- package/SVF-doxygen/html/MemRegion_8h_source.html +1 -1
- package/SVF-doxygen/html/MemSSA_8cpp_source.html +20 -20
- package/SVF-doxygen/html/MemSSA_8h_source.html +1 -1
- package/SVF-doxygen/html/PCG_8cpp_source.html +10 -10
- package/SVF-doxygen/html/PCG_8h_source.html +3 -3
- package/SVF-doxygen/html/PointerAnalysisImpl_8cpp_source.html +2 -2
- package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +14 -14
- package/SVF-doxygen/html/ProgSlice_8cpp_source.html +2 -2
- package/SVF-doxygen/html/ProgSlice_8h_source.html +1 -1
- package/SVF-doxygen/html/SVFBugReport_8h_source.html +2 -2
- package/SVF-doxygen/html/SVFFileSystem_8cpp_source.html +17 -17
- package/SVF-doxygen/html/SVFFileSystem_8h_source.html +15 -15
- package/SVF-doxygen/html/SVFGOPT_8h_source.html +3 -3
- package/SVF-doxygen/html/SVFGReadWrite_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFG_8cpp_source.html +6 -6
- package/SVF-doxygen/html/SVFG_8h_source.html +4 -4
- package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +4 -4
- package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +3 -3
- package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +23 -23
- package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +4 -4
- package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +8 -8
- package/SVF-doxygen/html/SVFIR_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFIR_8h_source.html +2 -2
- package/SVF-doxygen/html/SVFModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFModule_8h_source.html +3 -3
- package/SVF-doxygen/html/SVFStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFStatements_8h_source.html +2 -2
- package/SVF-doxygen/html/SVFUtil_8cpp_source.html +6 -6
- package/SVF-doxygen/html/SVFUtil_8h_source.html +6 -6
- package/SVF-doxygen/html/SVFValue_8cpp_source.html +126 -117
- package/SVF-doxygen/html/SVFValue_8h_source.html +1010 -1002
- package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SaberCheckerAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +14 -14
- package/SVF-doxygen/html/SaberCondAllocator_8h_source.html +5 -5
- package/SVF-doxygen/html/SaberSVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/Steensgaard_8cpp_source.html +4 -4
- package/SVF-doxygen/html/Steensgaard_8h_source.html +1 -1
- package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +17 -17
- package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SymbolTableInfo_8h_source.html +1 -1
- package/SVF-doxygen/html/TCT_8cpp_source.html +14 -14
- package/SVF-doxygen/html/TCT_8h_source.html +7 -7
- package/SVF-doxygen/html/ThreadAPI_8cpp_source.html +7 -7
- package/SVF-doxygen/html/ThreadAPI_8h_source.html +4 -4
- package/SVF-doxygen/html/ThreadCallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/TypeAnalysis_8cpp_source.html +4 -4
- package/SVF-doxygen/html/VFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/VFG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/VFG_8h_source.html +4 -4
- package/SVF-doxygen/html/WPAPass_8cpp_source.html +3 -3
- package/SVF-doxygen/html/WPAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AccessPath.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AliasDDAClient.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1Andersen.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1AndersenSCD.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BVDataPTAImpl.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CDGBuilder.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +8 -8
- package/SVF-doxygen/html/classSVF_1_1CHGBuilder.html +13 -13
- package/SVF-doxygen/html/classSVF_1_1CHGraph.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1CallCFGEdge.html +9 -9
- package/SVF-doxygen/html/classSVF_1_1CallCHI.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CallGraphBuilder.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1CallICFGNode.html +12 -12
- package/SVF-doxygen/html/classSVF_1_1CallMU.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CallSite.html +95 -95
- package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CxtStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CxtThread.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CxtThreadStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ExtAPI.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +12 -12
- package/SVF-doxygen/html/classSVF_1_1FunEntryICFGNode.html +16 -16
- package/SVF-doxygen/html/classSVF_1_1FunExitICFGNode.html +28 -20
- package/SVF-doxygen/html/classSVF_1_1FunptrDDAClient.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GlobalICFGNode.html +9 -9
- package/SVF-doxygen/html/classSVF_1_1ICFG.html +271 -271
- package/SVF-doxygen/html/classSVF_1_1ICFGBuilder.html +17 -17
- package/SVF-doxygen/html/classSVF_1_1ICFGEdge.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1ICFGNode.html +12 -12
- package/SVF-doxygen/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1IntraCFGEdge.html +12 -12
- package/SVF-doxygen/html/classSVF_1_1IntraICFGNode.html +15 -15
- package/SVF-doxygen/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LLVMLoopAnalysis.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +1075 -1061
- package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LockAnalysis.html +13 -13
- package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1MHP.html +12 -12
- package/SVF-doxygen/html/classSVF_1_1MHPValidator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MRGenerator.html +10 -10
- package/SVF-doxygen/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1MTASVFGBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MTAStat.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MemSSA.html +19 -19
- package/SVF-doxygen/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PCG.html +11 -11
- package/SVF-doxygen/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +13 -13
- package/SVF-doxygen/html/classSVF_1_1ProgSlice.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1RaceResultValidator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1RaceValidator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1RetCFGEdge.html +9 -9
- package/SVF-doxygen/html/classSVF_1_1RetICFGNode.html +12 -12
- package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFArgument.html +30 -30
- package/SVF-doxygen/html/classSVF_1_1SVFBasicBlock-members.html +18 -17
- package/SVF-doxygen/html/classSVF_1_1SVFBasicBlock.html +162 -136
- package/SVF-doxygen/html/classSVF_1_1SVFBlackHoleValue.html +15 -15
- package/SVF-doxygen/html/classSVF_1_1SVFBugEvent.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFCallInst.html +67 -67
- package/SVF-doxygen/html/classSVF_1_1SVFConstant.html +17 -17
- package/SVF-doxygen/html/classSVF_1_1SVFConstantData.html +23 -23
- package/SVF-doxygen/html/classSVF_1_1SVFConstantFP.html +21 -21
- package/SVF-doxygen/html/classSVF_1_1SVFConstantInt.html +27 -27
- package/SVF-doxygen/html/classSVF_1_1SVFConstantNullPtr.html +15 -15
- package/SVF-doxygen/html/classSVF_1_1SVFFunction-members.html +52 -50
- package/SVF-doxygen/html/classSVF_1_1SVFFunction.html +236 -176
- package/SVF-doxygen/html/classSVF_1_1SVFG.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1SVFGOPT.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1SVFGlobalValue.html +33 -33
- package/SVF-doxygen/html/classSVF_1_1SVFIR.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +39 -39
- package/SVF-doxygen/html/classSVF_1_1SVFInstruction.html +57 -57
- package/SVF-doxygen/html/classSVF_1_1SVFLoopAndDomInfo.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1SVFMetadataAsValue.html +15 -15
- package/SVF-doxygen/html/classSVF_1_1SVFModule.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFOtherValue.html +11 -11
- package/SVF-doxygen/html/classSVF_1_1SVFStat.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SVFValue.html +23 -23
- package/SVF-doxygen/html/classSVF_1_1SVFVirtualCallInst.html +53 -53
- package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +14 -14
- package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +17 -17
- package/SVF-doxygen/html/classSVF_1_1TCT.html +15 -15
- package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ThreadAPI.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1ThreadCallGraph.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1TypeAnalysis.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1VFG.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1WPAPass.html +2 -2
- package/SVF-doxygen/html/functions_b.html +3 -3
- package/SVF-doxygen/html/functions_e.html +3 -0
- package/SVF-doxygen/html/functions_func_i.html +3 -3
- package/SVF-doxygen/html/functions_func_p.html +1 -1
- package/SVF-doxygen/html/functions_func_s.html +22 -19
- package/SVF-doxygen/html/functions_i.html +1 -1
- package/SVF-doxygen/html/functions_l.html +3 -3
- package/SVF-doxygen/html/functions_o.html +15 -15
- package/SVF-doxygen/html/functions_p.html +9 -9
- package/SVF-doxygen/html/functions_r.html +4 -6
- package/SVF-doxygen/html/functions_rela_s.html +3 -0
- package/SVF-doxygen/html/functions_s.html +26 -20
- package/SVF-doxygen/html/functions_t.html +4 -4
- package/SVF-doxygen/html/functions_v.html +3 -3
- package/SVF-doxygen/html/functions_vars_e.html +3 -0
- package/SVF-doxygen/html/namespaceSVF.html +5 -5
- package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +1199 -1165
- package/SVF-doxygen/html/namespaceSVF_1_1SVFUtil.html +5 -5
- package/SVF-doxygen/html/namespacemembers_b.html +4 -1
- package/SVF-doxygen/html/namespacemembers_func_b.html +4 -1
- package/SVF-doxygen/html/search/all_10.js +324 -324
- package/SVF-doxygen/html/search/all_11.js +222 -222
- package/SVF-doxygen/html/search/all_12.js +544 -543
- package/SVF-doxygen/html/search/all_13.js +191 -191
- package/SVF-doxygen/html/search/all_14.js +67 -67
- package/SVF-doxygen/html/search/all_15.js +169 -169
- package/SVF-doxygen/html/search/all_16.js +63 -63
- 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 +11 -11
- package/SVF-doxygen/html/search/all_1a.js +172 -172
- package/SVF-doxygen/html/search/all_2.js +139 -138
- package/SVF-doxygen/html/search/all_3.js +642 -642
- package/SVF-doxygen/html/search/all_4.js +233 -233
- package/SVF-doxygen/html/search/all_5.js +119 -118
- package/SVF-doxygen/html/search/all_6.js +225 -225
- package/SVF-doxygen/html/search/all_7.js +1041 -1041
- package/SVF-doxygen/html/search/all_8.js +196 -196
- package/SVF-doxygen/html/search/all_9.js +613 -613
- 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 +116 -116
- package/SVF-doxygen/html/search/all_d.js +196 -196
- package/SVF-doxygen/html/search/all_e.js +207 -207
- package/SVF-doxygen/html/search/all_f.js +116 -116
- package/SVF-doxygen/html/search/classes_0.js +26 -26
- package/SVF-doxygen/html/search/classes_1.js +9 -9
- package/SVF-doxygen/html/search/classes_10.js +73 -73
- package/SVF-doxygen/html/search/classes_11.js +15 -15
- 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 +14 -14
- package/SVF-doxygen/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/search/classes_2.js +80 -80
- package/SVF-doxygen/html/search/classes_3.js +37 -37
- package/SVF-doxygen/html/search/classes_4.js +9 -9
- package/SVF-doxygen/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/search/classes_6.js +104 -104
- package/SVF-doxygen/html/search/classes_7.js +33 -33
- package/SVF-doxygen/html/search/classes_8.js +56 -56
- 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 +18 -18
- 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 +2 -2
- package/SVF-doxygen/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/search/defines_3.js +21 -21
- package/SVF-doxygen/html/search/defines_4.js +2 -2
- 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 +3 -3
- package/SVF-doxygen/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/search/defines_e.js +7 -7
- package/SVF-doxygen/html/search/defines_f.js +3 -3
- package/SVF-doxygen/html/search/enums_0.js +3 -3
- 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 +8 -8
- package/SVF-doxygen/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/search/enums_4.js +3 -3
- 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 +14 -14
- package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
- package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
- 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 +3 -3
- package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
- 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 +47 -47
- package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
- 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 +18 -18
- package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
- package/SVF-doxygen/html/search/files_0.js +13 -13
- package/SVF-doxygen/html/search/files_1.js +7 -7
- 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 +55 -55
- 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 +9 -9
- package/SVF-doxygen/html/search/files_7.js +14 -14
- 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 +2 -2
- 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 +12 -12
- package/SVF-doxygen/html/search/functions_1.js +360 -360
- package/SVF-doxygen/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/search/functions_11.js +138 -138
- package/SVF-doxygen/html/search/functions_12.js +279 -278
- package/SVF-doxygen/html/search/functions_13.js +59 -59
- package/SVF-doxygen/html/search/functions_14.js +39 -39
- package/SVF-doxygen/html/search/functions_15.js +71 -71
- package/SVF-doxygen/html/search/functions_16.js +32 -32
- package/SVF-doxygen/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/search/functions_18.js +172 -172
- package/SVF-doxygen/html/search/functions_2.js +87 -86
- package/SVF-doxygen/html/search/functions_3.js +257 -257
- package/SVF-doxygen/html/search/functions_4.js +75 -75
- package/SVF-doxygen/html/search/functions_5.js +53 -53
- package/SVF-doxygen/html/search/functions_6.js +59 -59
- package/SVF-doxygen/html/search/functions_7.js +852 -852
- package/SVF-doxygen/html/search/functions_8.js +148 -148
- package/SVF-doxygen/html/search/functions_9.js +429 -429
- 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 +26 -26
- package/SVF-doxygen/html/search/functions_d.js +77 -77
- package/SVF-doxygen/html/search/functions_e.js +35 -35
- package/SVF-doxygen/html/search/functions_f.js +56 -56
- 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 +2 -2
- 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 +4 -4
- 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 +1 -1
- package/SVF-doxygen/html/search/related_d.js +12 -11
- 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 +18 -18
- package/SVF-doxygen/html/search/typedefs_1.js +26 -26
- package/SVF-doxygen/html/search/typedefs_10.js +61 -61
- package/SVF-doxygen/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/search/typedefs_13.js +34 -34
- package/SVF-doxygen/html/search/typedefs_14.js +8 -8
- package/SVF-doxygen/html/search/typedefs_2.js +129 -129
- 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 +41 -41
- package/SVF-doxygen/html/search/typedefs_6.js +55 -55
- package/SVF-doxygen/html/search/typedefs_7.js +44 -44
- 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 +14 -14
- 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 +151 -151
- package/SVF-doxygen/html/search/variables_1.js +75 -75
- package/SVF-doxygen/html/search/variables_10.js +97 -97
- package/SVF-doxygen/html/search/variables_11.js +44 -44
- package/SVF-doxygen/html/search/variables_12.js +92 -92
- package/SVF-doxygen/html/search/variables_13.js +75 -75
- package/SVF-doxygen/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/search/variables_15.js +48 -48
- package/SVF-doxygen/html/search/variables_16.js +9 -9
- package/SVF-doxygen/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/search/variables_18.js +2 -2
- package/SVF-doxygen/html/search/variables_2.js +38 -38
- package/SVF-doxygen/html/search/variables_3.js +142 -142
- package/SVF-doxygen/html/search/variables_4.js +55 -55
- package/SVF-doxygen/html/search/variables_5.js +37 -36
- package/SVF-doxygen/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/search/variables_7.js +33 -33
- package/SVF-doxygen/html/search/variables_8.js +7 -7
- package/SVF-doxygen/html/search/variables_9.js +77 -77
- 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 +56 -56
- package/SVF-doxygen/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/search/variables_f.js +30 -30
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +82 -82
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +7 -7
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
- package/SVF-doxygen/html/svf-ex_8cpp.html +2 -2
- package/SVF-doxygen/html/svf-ex_8cpp_source.html +2 -2
- package/SVF-doxygen/html/svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html +2 -2
- package/SVF-doxygen/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +2 -2
- package/package.json +1 -1
- package/svf/include/SVFIR/SVFValue.h +13 -2
- package/svf/lib/Graphs/ICFG.cpp +10 -4
- package/svf/lib/SVFIR/SVFValue.cpp +8 -1
- package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +3 -0
- package/svf-llvm/lib/LLVMModule.cpp +11 -0
- package/svf-llvm/lib/LLVMUtil.cpp +17 -5
|
@@ -131,6 +131,9 @@ Functions</h2></td></tr>
|
|
|
131
131
|
<tr class="memitem:a428bd75b33fab60988d8758090712f29"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">isArgOfUncalledFunction</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
|
|
132
132
|
<tr class="memdesc:a428bd75b33fab60988d8758090712f29"><td class="mdescLeft"> </td><td class="mdescRight">Return true if the argument in a function does not have a caller. <a href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">More...</a><br /></td></tr>
|
|
133
133
|
<tr class="separator:a428bd75b33fab60988d8758090712f29"><td class="memSeparator" colspan="2"> </td></tr>
|
|
134
|
+
<tr class="memitem:abb4b5ed04ec70a2e7fca8198132370cf"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#abb4b5ed04ec70a2e7fca8198132370cf">basicBlockHasRetInst</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb)</td></tr>
|
|
135
|
+
<tr class="memdesc:abb4b5ed04ec70a2e7fca8198132370cf"><td class="mdescLeft"> </td><td class="mdescRight">Return true if the function has a return instruction. <a href="namespaceSVF_1_1LLVMUtil.html#abb4b5ed04ec70a2e7fca8198132370cf">More...</a><br /></td></tr>
|
|
136
|
+
<tr class="separator:abb4b5ed04ec70a2e7fca8198132370cf"><td class="memSeparator" colspan="2"> </td></tr>
|
|
134
137
|
<tr class="memitem:a651b6a1cf3665277d2241220bb145aed"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">functionDoesNotRet</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun)</td></tr>
|
|
135
138
|
<tr class="separator:a651b6a1cf3665277d2241220bb145aed"><td class="memSeparator" colspan="2"> </td></tr>
|
|
136
139
|
<tr class="memitem:a9bd6f54920929e5ad35102ba2f2223da"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">getFunReachableBBs</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *svfFun, std::vector< const <a class="el" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> * > &bbs)</td></tr>
|
|
@@ -350,6 +353,38 @@ Functions</h2></td></tr>
|
|
|
350
353
|
</div><!-- fragment -->
|
|
351
354
|
</div>
|
|
352
355
|
</div>
|
|
356
|
+
<a id="abb4b5ed04ec70a2e7fca8198132370cf"></a>
|
|
357
|
+
<h2 class="memtitle"><span class="permalink"><a href="#abb4b5ed04ec70a2e7fca8198132370cf">◆ </a></span>basicBlockHasRetInst()</h2>
|
|
358
|
+
|
|
359
|
+
<div class="memitem">
|
|
360
|
+
<div class="memproto">
|
|
361
|
+
<table class="memname">
|
|
362
|
+
<tr>
|
|
363
|
+
<td class="memname">bool SVF::LLVMUtil::basicBlockHasRetInst </td>
|
|
364
|
+
<td>(</td>
|
|
365
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * </td>
|
|
366
|
+
<td class="paramname"><em>bb</em></td><td>)</td>
|
|
367
|
+
<td></td>
|
|
368
|
+
</tr>
|
|
369
|
+
</table>
|
|
370
|
+
</div><div class="memdoc">
|
|
371
|
+
|
|
372
|
+
<p>Return true if the function has a return instruction. </p>
|
|
373
|
+
<p>Return true if the basic block has a return instruction </p>
|
|
374
|
+
|
|
375
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00104">104</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
376
|
+
<div class="fragment"><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> {</div>
|
|
377
|
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb->begin(), eit = bb->end();</div>
|
|
378
|
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  it != eit; ++it)</div>
|
|
379
|
+
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div>
|
|
380
|
+
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span>(SVFUtil::isa<ReturnInst>(*it))</div>
|
|
381
|
+
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
382
|
+
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div>
|
|
383
|
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
384
|
+
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> }</div>
|
|
385
|
+
</div><!-- fragment -->
|
|
386
|
+
</div>
|
|
387
|
+
</div>
|
|
353
388
|
<a id="a651b6a1cf3665277d2241220bb145aed"></a>
|
|
354
389
|
<h2 class="memtitle"><span class="permalink"><a href="#a651b6a1cf3665277d2241220bb145aed">◆ </a></span>functionDoesNotRet()</h2>
|
|
355
390
|
|
|
@@ -367,40 +402,38 @@ Functions</h2></td></tr>
|
|
|
367
402
|
</div><div class="memdoc">
|
|
368
403
|
<p>Return true if the function has a return instruction reachable from function entry </p>
|
|
369
404
|
|
|
370
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
371
|
-
<div class="fragment"><div class="line"><a name="
|
|
372
|
-
<div class="line"><a name="
|
|
373
|
-
<div class="line"><a name="
|
|
374
|
-
<div class="line"><a name="
|
|
375
|
-
<div class="line"><a name="
|
|
376
|
-
<div class="line"><a name="
|
|
377
|
-
<div class="line"><a name="
|
|
378
|
-
<div class="line"><a name="
|
|
379
|
-
<div class="line"><a name="
|
|
380
|
-
<div class="line"><a name="
|
|
381
|
-
<div class="line"><a name="
|
|
382
|
-
<div class="line"><a name="
|
|
383
|
-
<div class="line"><a name="
|
|
384
|
-
<div class="line"><a name="
|
|
385
|
-
<div class="line"><a name="
|
|
386
|
-
<div class="line"><a name="
|
|
387
|
-
<div class="line"><a name="
|
|
388
|
-
<div class="line"><a name="
|
|
389
|
-
<div class="line"><a name="
|
|
390
|
-
<div class="line"><a name="
|
|
391
|
-
<div class="line"><a name="
|
|
392
|
-
<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="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
403
|
-
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> }</div>
|
|
405
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00118">118</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
406
|
+
<div class="fragment"><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> {</div>
|
|
407
|
+
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = LLVMModuleSet::getLLVMModuleSet()->getSVFFunction(fun);</div>
|
|
408
|
+
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun))</div>
|
|
409
|
+
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div>
|
|
410
|
+
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> fun-><a class="code" href="classSVF_1_1SVFFunction.html#af264312f0020bde9151697bccfde3263">getReturnType</a>()->isVoidTy();</div>
|
|
411
|
+
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div>
|
|
412
|
+
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  std::vector<const BasicBlock*> bbVec;</div>
|
|
413
|
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const BasicBlock*></a> visited;</div>
|
|
414
|
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  bbVec.push_back(&fun->getEntryBlock());</div>
|
|
415
|
+
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">while</span>(!bbVec.empty())</div>
|
|
416
|
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div>
|
|
417
|
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbVec.back();</div>
|
|
418
|
+
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  bbVec.pop_back();</div>
|
|
419
|
+
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abb4b5ed04ec70a2e7fca8198132370cf">basicBlockHasRetInst</a>(bb))</div>
|
|
420
|
+
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div>
|
|
421
|
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
422
|
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div>
|
|
423
|
+
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  </div>
|
|
424
|
+
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> sit = succ_begin(bb), esit = succ_end(bb);</div>
|
|
425
|
+
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  sit != esit; ++sit)</div>
|
|
426
|
+
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  {</div>
|
|
427
|
+
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succbb = (*sit);</div>
|
|
428
|
+
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span>(visited.find(succbb)==visited.end())</div>
|
|
429
|
+
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  visited.insert(succbb);</div>
|
|
430
|
+
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">else</span></div>
|
|
431
|
+
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">continue</span>;</div>
|
|
432
|
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  bbVec.push_back(succbb);</div>
|
|
433
|
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div>
|
|
434
|
+
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div>
|
|
435
|
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
436
|
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div>
|
|
404
437
|
</div><!-- fragment -->
|
|
405
438
|
</div>
|
|
406
439
|
</div>
|
|
@@ -423,13 +456,13 @@ Functions</h2></td></tr>
|
|
|
423
456
|
<p>Get num of BB's predecessors. </p>
|
|
424
457
|
<p>Get the num of BB's predecessors </p>
|
|
425
458
|
|
|
426
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
427
|
-
<div class="fragment"><div class="line"><a name="
|
|
428
|
-
<div class="line"><a name="
|
|
429
|
-
<div class="line"><a name="
|
|
430
|
-
<div class="line"><a name="
|
|
431
|
-
<div class="line"><a name="
|
|
432
|
-
<div class="line"><a name="
|
|
459
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00399">399</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
460
|
+
<div class="fragment"><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> {</div>
|
|
461
|
+
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div>
|
|
462
|
+
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), et = pred_end(BB); it != et; ++it)</div>
|
|
463
|
+
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  num++;</div>
|
|
464
|
+
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">return</span> num;</div>
|
|
465
|
+
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span> }</div>
|
|
433
466
|
</div><!-- fragment -->
|
|
434
467
|
</div>
|
|
435
468
|
</div>
|
|
@@ -451,24 +484,24 @@ Functions</h2></td></tr>
|
|
|
451
484
|
|
|
452
485
|
<p>Get all called funcions in a parent function. </p>
|
|
453
486
|
|
|
454
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
455
|
-
<div class="fragment"><div class="line"><a name="
|
|
456
|
-
<div class="line"><a name="
|
|
457
|
-
<div class="line"><a name="
|
|
458
|
-
<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="
|
|
469
|
-
<div class="line"><a name="
|
|
470
|
-
<div class="line"><a name="
|
|
471
|
-
<div class="line"><a name="
|
|
487
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00559">559</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
488
|
+
<div class="fragment"><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> {</div>
|
|
489
|
+
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  std::vector<const Function *> calledFunctions;</div>
|
|
490
|
+
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> &I : instructions(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
|
|
491
|
+
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  {</div>
|
|
492
|
+
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *callInst = SVFUtil::dyn_cast<CallBase>(&I))</div>
|
|
493
|
+
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  {</div>
|
|
494
|
+
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *calledFunction = callInst->getCalledFunction();</div>
|
|
495
|
+
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">if</span> (calledFunction)</div>
|
|
496
|
+
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  {</div>
|
|
497
|
+
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  calledFunctions.push_back(calledFunction);</div>
|
|
498
|
+
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  std::vector<const Function *> nestedCalledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">getCalledFunctions</a>(calledFunction);</div>
|
|
499
|
+
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  calledFunctions.insert(calledFunctions.end(), nestedCalledFunctions.begin(), nestedCalledFunctions.end());</div>
|
|
500
|
+
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  }</div>
|
|
501
|
+
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  }</div>
|
|
502
|
+
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  }</div>
|
|
503
|
+
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">return</span> calledFunctions;</div>
|
|
504
|
+
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span> }</div>
|
|
472
505
|
</div><!-- fragment -->
|
|
473
506
|
</div>
|
|
474
507
|
</div>
|
|
@@ -535,28 +568,28 @@ Functions</h2></td></tr>
|
|
|
535
568
|
<p>get normal case value</p>
|
|
536
569
|
<p>For larger number, we preserve case value just -1 now see more: <a href="https://github.com/SVF-tools/SVF/pull/992">https://github.com/SVF-tools/SVF/pull/992</a></p>
|
|
537
570
|
|
|
538
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
539
|
-
<div class="fragment"><div class="line"><a name="
|
|
540
|
-
<div class="line"><a name="
|
|
541
|
-
<div class="line"><a name="
|
|
542
|
-
<div class="line"><a name="
|
|
543
|
-
<div class="line"><a name="
|
|
544
|
-
<div class="line"><a name="
|
|
545
|
-
<div class="line"><a name="
|
|
546
|
-
<div class="line"><a name="
|
|
547
|
-
<div class="line"><a name="
|
|
548
|
-
<div class="line"><a name="
|
|
549
|
-
<div class="line"><a name="
|
|
550
|
-
<div class="line"><a name="
|
|
551
|
-
<div class="line"><a name="
|
|
552
|
-
<div class="line"><a name="
|
|
553
|
-
<div class="line"><a name="
|
|
554
|
-
<div class="line"><a name="
|
|
555
|
-
<div class="line"><a name="
|
|
556
|
-
<div class="line"><a name="
|
|
557
|
-
<div class="line"><a name="
|
|
558
|
-
<div class="line"><a name="
|
|
559
|
-
<div class="line"><a name="
|
|
571
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01254">1254</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
572
|
+
<div class="fragment"><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> {</div>
|
|
573
|
+
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succBB = succBB2CondVal.first;</div>
|
|
574
|
+
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* caseValue = succBB2CondVal.second;</div>
|
|
575
|
+
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val;</div>
|
|
576
|
+
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  <span class="keywordflow">if</span> (caseValue == <span class="keyword">nullptr</span> || succBB == switchInst.getDefaultDest())</div>
|
|
577
|
+
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  {</div>
|
|
578
|
+
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  val = -1;</div>
|
|
579
|
+
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  }</div>
|
|
580
|
+
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  <span class="keywordflow">else</span></div>
|
|
581
|
+
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  {</div>
|
|
582
|
+
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  <span class="keywordflow">if</span> (caseValue->getBitWidth() <= 64)</div>
|
|
583
|
+
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  {</div>
|
|
584
|
+
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  val = caseValue->getSExtValue();</div>
|
|
585
|
+
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  }</div>
|
|
586
|
+
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  <span class="keywordflow">else</span></div>
|
|
587
|
+
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  {</div>
|
|
588
|
+
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  val = -1;</div>
|
|
589
|
+
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  }</div>
|
|
590
|
+
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  }</div>
|
|
591
|
+
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  <span class="keywordflow">return</span> val;</div>
|
|
592
|
+
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span> }</div>
|
|
560
593
|
</div><!-- fragment -->
|
|
561
594
|
</div>
|
|
562
595
|
</div>
|
|
@@ -576,29 +609,29 @@ Functions</h2></td></tr>
|
|
|
576
609
|
</table>
|
|
577
610
|
</div><div class="memdoc">
|
|
578
611
|
|
|
579
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
580
|
-
<div class="fragment"><div class="line"><a name="
|
|
581
|
-
<div class="line"><a name="
|
|
582
|
-
<div class="line"><a name="
|
|
583
|
-
<div class="line"><a name="
|
|
584
|
-
<div class="line"><a name="
|
|
585
|
-
<div class="line"><a name="
|
|
586
|
-
<div class="line"><a name="
|
|
587
|
-
<div class="line"><a name="
|
|
588
|
-
<div class="line"><a name="
|
|
589
|
-
<div class="line"><a name="
|
|
590
|
-
<div class="line"><a name="
|
|
591
|
-
<div class="line"><a name="
|
|
592
|
-
<div class="line"><a name="
|
|
593
|
-
<div class="line"><a name="
|
|
594
|
-
<div class="line"><a name="
|
|
595
|
-
<div class="line"><a name="
|
|
596
|
-
<div class="line"><a name="
|
|
597
|
-
<div class="line"><a name="
|
|
598
|
-
<div class="line"><a name="
|
|
599
|
-
<div class="line"><a name="
|
|
600
|
-
<div class="line"><a name="
|
|
601
|
-
<div class="line"><a name="
|
|
612
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01159">1159</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
613
|
+
<div class="fragment"><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> {</div>
|
|
614
|
+
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <span class="stringliteral">""</span>;</div>
|
|
615
|
+
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrType = SVFUtil::dyn_cast<PointerType>(ty))</div>
|
|
616
|
+
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  {</div>
|
|
617
|
+
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemType = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrType);</div>
|
|
618
|
+
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType>(elemType) &&</div>
|
|
619
|
+
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  !((SVFUtil::cast<StructType>(elemType))->isLiteral()))</div>
|
|
620
|
+
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  {</div>
|
|
621
|
+
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> elemTypeName = elemType->getStructName().str();</div>
|
|
622
|
+
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>) == 0)</div>
|
|
623
|
+
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  {</div>
|
|
624
|
+
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size());</div>
|
|
625
|
+
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  }</div>
|
|
626
|
+
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>) ==</div>
|
|
627
|
+
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  0)</div>
|
|
628
|
+
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  {</div>
|
|
629
|
+
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size());</div>
|
|
630
|
+
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  }</div>
|
|
631
|
+
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  }</div>
|
|
632
|
+
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  }</div>
|
|
633
|
+
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  <span class="keywordflow">return</span> className;</div>
|
|
634
|
+
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span> }</div>
|
|
602
635
|
</div><!-- fragment -->
|
|
603
636
|
</div>
|
|
604
637
|
</div>
|
|
@@ -618,32 +651,32 @@ Functions</h2></td></tr>
|
|
|
618
651
|
</table>
|
|
619
652
|
</div><div class="memdoc">
|
|
620
653
|
|
|
621
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
622
|
-
<div class="fragment"><div class="line"><a name="
|
|
623
|
-
<div class="line"><a name="
|
|
624
|
-
<div class="line"><a name="
|
|
625
|
-
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  {</div>
|
|
626
|
-
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast<MDString>(N->getOperand(0).get());</div>
|
|
627
|
-
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  thisPtrClassName = mdstr->getString().str();</div>
|
|
628
|
-
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  }</div>
|
|
629
|
-
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <span class="keywordflow">if</span> (thisPtrClassName.size() == 0)</div>
|
|
630
|
-
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  {</div>
|
|
631
|
-
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">LLVMUtil::getVCallThisPtr</a>(inst);</div>
|
|
632
|
-
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  thisPtrClassName = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">getClassNameFromType</a>(thisPtr->getType());</div>
|
|
633
|
-
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  }</div>
|
|
634
|
-
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  </div>
|
|
635
|
-
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  <span class="keywordtype">size_t</span> found = thisPtrClassName.find_last_not_of(<span class="stringliteral">"0123456789"</span>);</div>
|
|
636
|
-
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="keywordflow">if</span> (found != std::string::npos)</div>
|
|
654
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01183">1183</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
655
|
+
<div class="fragment"><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> {</div>
|
|
656
|
+
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> thisPtrClassName;</div>
|
|
657
|
+
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst->getMetadata(<span class="stringliteral">"VCallPtrType"</span>))</div>
|
|
637
658
|
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  {</div>
|
|
638
|
-
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  <span class="
|
|
639
|
-
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> 
|
|
640
|
-
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> 
|
|
641
|
-
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> 
|
|
642
|
-
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> 
|
|
643
|
-
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> 
|
|
644
|
-
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  </div>
|
|
645
|
-
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> 
|
|
646
|
-
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> 
|
|
659
|
+
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast<MDString>(N->getOperand(0).get());</div>
|
|
660
|
+
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  thisPtrClassName = mdstr->getString().str();</div>
|
|
661
|
+
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  }</div>
|
|
662
|
+
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  <span class="keywordflow">if</span> (thisPtrClassName.size() == 0)</div>
|
|
663
|
+
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  {</div>
|
|
664
|
+
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">LLVMUtil::getVCallThisPtr</a>(inst);</div>
|
|
665
|
+
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  thisPtrClassName = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">getClassNameFromType</a>(thisPtr->getType());</div>
|
|
666
|
+
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  }</div>
|
|
667
|
+
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  </div>
|
|
668
|
+
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  <span class="keywordtype">size_t</span> found = thisPtrClassName.find_last_not_of(<span class="stringliteral">"0123456789"</span>);</div>
|
|
669
|
+
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  <span class="keywordflow">if</span> (found != std::string::npos)</div>
|
|
670
|
+
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  {</div>
|
|
671
|
+
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  <span class="keywordflow">if</span> (found != thisPtrClassName.size() - 1 &&</div>
|
|
672
|
+
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  thisPtrClassName[found] == <span class="charliteral">'.'</span>)</div>
|
|
673
|
+
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  {</div>
|
|
674
|
+
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <span class="keywordflow">return</span> thisPtrClassName.substr(0, found);</div>
|
|
675
|
+
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  }</div>
|
|
676
|
+
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  }</div>
|
|
677
|
+
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  </div>
|
|
678
|
+
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <span class="keywordflow">return</span> thisPtrClassName;</div>
|
|
679
|
+
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> }</div>
|
|
647
680
|
</div><!-- fragment -->
|
|
648
681
|
</div>
|
|
649
682
|
</div>
|
|
@@ -663,14 +696,14 @@ Functions</h2></td></tr>
|
|
|
663
696
|
</table>
|
|
664
697
|
</div><div class="memdoc">
|
|
665
698
|
|
|
666
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
667
|
-
<div class="fragment"><div class="line"><a name="
|
|
668
|
-
<div class="line"><a name="
|
|
669
|
-
<div class="line"><a name="
|
|
670
|
-
<div class="line"><a name="
|
|
671
|
-
<div class="line"><a name="
|
|
672
|
-
<div class="line"><a name="
|
|
673
|
-
<div class="line"><a name="
|
|
699
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01051">1051</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
700
|
+
<div class="fragment"><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> {</div>
|
|
701
|
+
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  assert((<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(fun) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(fun)) &&</div>
|
|
702
|
+
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  <span class="stringliteral">"not a constructor?"</span>);</div>
|
|
703
|
+
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  assert(fun->arg_size() >= 1 && <span class="stringliteral">"argument size >= 1?"</span>);</div>
|
|
704
|
+
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* thisPtr = &*(fun->arg_begin());</div>
|
|
705
|
+
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keywordflow">return</span> thisPtr;</div>
|
|
706
|
+
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> }</div>
|
|
674
707
|
</div><!-- fragment -->
|
|
675
708
|
</div>
|
|
676
709
|
</div>
|
|
@@ -698,13 +731,13 @@ Functions</h2></td></tr>
|
|
|
698
731
|
</table>
|
|
699
732
|
</div><div class="memdoc">
|
|
700
733
|
|
|
701
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
702
|
-
<div class="fragment"><div class="line"><a name="
|
|
703
|
-
<div class="line"><a name="
|
|
704
|
-
<div class="line"><a name="
|
|
705
|
-
<div class="line"><a name="
|
|
706
|
-
<div class="line"><a name="
|
|
707
|
-
<div class="line"><a name="
|
|
734
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00332">332</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
735
|
+
<div class="fragment"><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> {</div>
|
|
736
|
+
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a> *dl = <span class="keyword">nullptr</span>;</div>
|
|
737
|
+
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">if</span> (dl == <span class="keyword">nullptr</span>)</div>
|
|
738
|
+
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  dl = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a>(mod);</div>
|
|
739
|
+
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">return</span> dl;</div>
|
|
740
|
+
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span> }</div>
|
|
708
741
|
</div><!-- fragment -->
|
|
709
742
|
</div>
|
|
710
743
|
</div>
|
|
@@ -762,46 +795,46 @@ Functions</h2></td></tr>
|
|
|
762
795
|
</table>
|
|
763
796
|
</div><div class="memdoc">
|
|
764
797
|
|
|
765
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
766
|
-
<div class="fragment"><div class="line"><a name="
|
|
767
|
-
<div class="line"><a name="
|
|
768
|
-
<div class="line"><a name="
|
|
769
|
-
<div class="line"><a name="
|
|
770
|
-
<div class="line"><a name="
|
|
771
|
-
<div class="line"><a name="
|
|
772
|
-
<div class="line"><a name="
|
|
773
|
-
<div class="line"><a name="
|
|
774
|
-
<div class="line"><a name="
|
|
775
|
-
<div class="line"><a name="
|
|
776
|
-
<div class="line"><a name="
|
|
777
|
-
<div class="line"><a name="
|
|
778
|
-
<div class="line"><a name="
|
|
779
|
-
<div class="line"><a name="
|
|
780
|
-
<div class="line"><a name="
|
|
781
|
-
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">continue</span>;</div>
|
|
782
|
-
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  </div>
|
|
783
|
-
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *expr = SVFUtil::dyn_cast<ConstantExpr>(structAn->getOperand(0));</div>
|
|
784
|
-
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">if</span> (expr == <span class="keyword">nullptr</span> || expr->getOpcode() != Instruction::BitCast || expr->getOperand(0) != fun)</div>
|
|
785
|
-
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">continue</span>;</div>
|
|
786
|
-
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  </div>
|
|
787
|
-
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *note = SVFUtil::cast<ConstantExpr>(structAn->getOperand(1));</div>
|
|
788
|
-
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">if</span> (note->getOpcode() != Instruction::GetElementPtr)</div>
|
|
789
|
-
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">continue</span>;</div>
|
|
790
|
-
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  </div>
|
|
791
|
-
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *annotateStr = SVFUtil::dyn_cast<GlobalVariable>(note->getOperand(0));</div>
|
|
792
|
-
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">if</span> (annotateStr == <span class="keyword">nullptr</span> || !annotateStr->hasInitializer())</div>
|
|
798
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00456">456</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
799
|
+
<div class="fragment"><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> {</div>
|
|
800
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  std::vector<std::string> annotations;</div>
|
|
801
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="comment">// Get annotation variable</span></div>
|
|
802
|
+
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *glob = fun->getParent()->getGlobalVariable(<span class="stringliteral">"llvm.global.annotations"</span>);</div>
|
|
803
|
+
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob->hasInitializer())</div>
|
|
804
|
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">return</span> annotations;</div>
|
|
805
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  </div>
|
|
806
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *ca = SVFUtil::dyn_cast<ConstantArray>(glob->getInitializer());</div>
|
|
807
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
|
|
808
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">return</span> annotations;</div>
|
|
809
|
+
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  </div>
|
|
810
|
+
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < ca->getNumOperands(); ++i)</div>
|
|
811
|
+
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  {</div>
|
|
812
|
+
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *structAn = SVFUtil::dyn_cast<ConstantStruct>(ca->getOperand(i));</div>
|
|
813
|
+
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
|
|
793
814
|
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">continue</span>;</div>
|
|
794
815
|
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  </div>
|
|
795
|
-
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <a class="code" href="namespaceSVF.html#
|
|
796
|
-
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">if</span> (
|
|
797
|
-
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span> 
|
|
798
|
-
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span> 
|
|
799
|
-
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span> 
|
|
800
|
-
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span> 
|
|
801
|
-
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span> 
|
|
802
|
-
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span> 
|
|
803
|
-
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> 
|
|
804
|
-
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span> 
|
|
816
|
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *expr = SVFUtil::dyn_cast<ConstantExpr>(structAn->getOperand(0));</div>
|
|
817
|
+
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">if</span> (expr == <span class="keyword">nullptr</span> || expr->getOpcode() != Instruction::BitCast || expr->getOperand(0) != fun)</div>
|
|
818
|
+
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">continue</span>;</div>
|
|
819
|
+
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  </div>
|
|
820
|
+
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *note = SVFUtil::cast<ConstantExpr>(structAn->getOperand(1));</div>
|
|
821
|
+
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">if</span> (note->getOpcode() != Instruction::GetElementPtr)</div>
|
|
822
|
+
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">continue</span>;</div>
|
|
823
|
+
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  </div>
|
|
824
|
+
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *annotateStr = SVFUtil::dyn_cast<GlobalVariable>(note->getOperand(0));</div>
|
|
825
|
+
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">if</span> (annotateStr == <span class="keyword">nullptr</span> || !annotateStr->hasInitializer())</div>
|
|
826
|
+
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">continue</span>;</div>
|
|
827
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  </div>
|
|
828
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a> *data = SVFUtil::dyn_cast<ConstantDataSequential>(annotateStr->getInitializer());</div>
|
|
829
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">if</span> (data->isString())</div>
|
|
830
|
+
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  {</div>
|
|
831
|
+
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> annotation = data->getAsString().str();</div>
|
|
832
|
+
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">if</span> (!annotation.empty())</div>
|
|
833
|
+
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  annotations.push_back(annotation);</div>
|
|
834
|
+
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  }</div>
|
|
835
|
+
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  }</div>
|
|
836
|
+
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">return</span> annotations;</div>
|
|
837
|
+
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> }</div>
|
|
805
838
|
</div><!-- fragment -->
|
|
806
839
|
</div>
|
|
807
840
|
</div>
|
|
@@ -831,10 +864,10 @@ Functions</h2></td></tr>
|
|
|
831
864
|
|
|
832
865
|
<p>Get the corresponding Function based on its name. </p>
|
|
833
866
|
|
|
834
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
835
|
-
<div class="fragment"><div class="line"><a name="
|
|
836
|
-
<div class="line"><a name="
|
|
837
|
-
<div class="line"><a name="
|
|
867
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00408">408</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
868
|
+
<div class="fragment"><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> {</div>
|
|
869
|
+
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()->getSVFFunction(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
|
|
870
|
+
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> }</div>
|
|
838
871
|
</div><!-- fragment -->
|
|
839
872
|
</div>
|
|
840
873
|
</div>
|
|
@@ -854,16 +887,16 @@ Functions</h2></td></tr>
|
|
|
854
887
|
</table>
|
|
855
888
|
</div><div class="memdoc">
|
|
856
889
|
|
|
857
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
858
|
-
<div class="fragment"><div class="line"><a name="
|
|
859
|
-
<div class="line"><a name="
|
|
860
|
-
<div class="line"><a name="
|
|
861
|
-
<div class="line"><a name="
|
|
862
|
-
<div class="line"><a name="
|
|
863
|
-
<div class="line"><a name="
|
|
864
|
-
<div class="line"><a name="
|
|
865
|
-
<div class="line"><a name="
|
|
866
|
-
<div class="line"><a name="
|
|
890
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01210">1210</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
891
|
+
<div class="fragment"><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> {</div>
|
|
892
|
+
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName;</div>
|
|
893
|
+
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst->getMetadata(<span class="stringliteral">"VCallFunName"</span>))</div>
|
|
894
|
+
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  {</div>
|
|
895
|
+
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast<MDString>(N->getOperand(0).get());</div>
|
|
896
|
+
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  funName = mdstr->getString().str();</div>
|
|
897
|
+
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  }</div>
|
|
898
|
+
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  <span class="keywordflow">return</span> funName;</div>
|
|
899
|
+
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> }</div>
|
|
867
900
|
</div><!-- fragment -->
|
|
868
901
|
</div>
|
|
869
902
|
</div>
|
|
@@ -956,15 +989,15 @@ Functions</h2></td></tr>
|
|
|
956
989
|
|
|
957
990
|
<p>find the unique defined global across multiple modules </p>
|
|
958
991
|
|
|
959
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
960
|
-
<div class="fragment"><div class="line"><a name="
|
|
961
|
-
<div class="line"><a name="
|
|
962
|
-
<div class="line"><a name="
|
|
963
|
-
<div class="line"><a name="
|
|
964
|
-
<div class="line"><a name="
|
|
965
|
-
<div class="line"><a name="
|
|
966
|
-
<div class="line"><a name="
|
|
967
|
-
<div class="line"><a name="
|
|
992
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00421">421</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
993
|
+
<div class="fragment"><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> {</div>
|
|
994
|
+
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast<GlobalVariable>(val))</div>
|
|
995
|
+
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  {</div>
|
|
996
|
+
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()->hasGlobalRep(gvar))</div>
|
|
997
|
+
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  val = LLVMModuleSet::getLLVMModuleSet()->getGlobalRep(gvar);</div>
|
|
998
|
+
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  }</div>
|
|
999
|
+
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">return</span> val;</div>
|
|
1000
|
+
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> }</div>
|
|
968
1001
|
</div><!-- fragment -->
|
|
969
1002
|
</div>
|
|
970
1003
|
</div>
|
|
@@ -1063,30 +1096,30 @@ Functions</h2></td></tr>
|
|
|
1063
1096
|
|
|
1064
1097
|
<p>Get the next instructions following control flow. </p>
|
|
1065
1098
|
|
|
1066
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1067
|
-
<div class="fragment"><div class="line"><a name="
|
|
1068
|
-
<div class="line"><a name="
|
|
1069
|
-
<div class="line"><a name="
|
|
1070
|
-
<div class="line"><a name="
|
|
1071
|
-
<div class="line"><a name="
|
|
1072
|
-
<div class="line"><a name="
|
|
1073
|
-
<div class="line"><a name="
|
|
1074
|
-
<div class="line"><a name="
|
|
1075
|
-
<div class="line"><a name="
|
|
1076
|
-
<div class="line"><a name="
|
|
1077
|
-
<div class="line"><a name="
|
|
1078
|
-
<div class="line"><a name="
|
|
1079
|
-
<div class="line"><a name="
|
|
1080
|
-
<div class="line"><a name="
|
|
1081
|
-
<div class="line"><a name="
|
|
1082
|
-
<div class="line"><a name="
|
|
1083
|
-
<div class="line"><a name="
|
|
1084
|
-
<div class="line"><a name="
|
|
1085
|
-
<div class="line"><a name="
|
|
1086
|
-
<div class="line"><a name="
|
|
1087
|
-
<div class="line"><a name="
|
|
1088
|
-
<div class="line"><a name="
|
|
1089
|
-
<div class="line"><a name="
|
|
1099
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00800">800</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1100
|
+
<div class="fragment"><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> {</div>
|
|
1101
|
+
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="keywordflow">if</span> (!curInst->isTerminator())</div>
|
|
1102
|
+
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  {</div>
|
|
1103
|
+
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst->getNextNode();</div>
|
|
1104
|
+
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
|
|
1105
|
+
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
|
|
1106
|
+
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="keywordflow">else</span></div>
|
|
1107
|
+
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  instList.push_back(nextInst);</div>
|
|
1108
|
+
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  }</div>
|
|
1109
|
+
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">else</span></div>
|
|
1110
|
+
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  {</div>
|
|
1111
|
+
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst->getParent();</div>
|
|
1112
|
+
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div>
|
|
1113
|
+
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div>
|
|
1114
|
+
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  {</div>
|
|
1115
|
+
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &((*it)->front());</div>
|
|
1116
|
+
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
|
|
1117
|
+
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
|
|
1118
|
+
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keywordflow">else</span></div>
|
|
1119
|
+
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  instList.push_back(nextInst);</div>
|
|
1120
|
+
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  }</div>
|
|
1121
|
+
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  }</div>
|
|
1122
|
+
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span> }</div>
|
|
1090
1123
|
</div><!-- fragment -->
|
|
1091
1124
|
</div>
|
|
1092
1125
|
</div>
|
|
@@ -1118,32 +1151,32 @@ Functions</h2></td></tr>
|
|
|
1118
1151
|
|
|
1119
1152
|
<p>Get the next instructions following control flow. </p>
|
|
1120
1153
|
|
|
1121
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1122
|
-
<div class="fragment"><div class="line"><a name="
|
|
1123
|
-
<div class="line"><a name="
|
|
1124
|
-
<div class="line"><a name="
|
|
1125
|
-
<div class="line"><a name="
|
|
1126
|
-
<div class="line"><a name="
|
|
1127
|
-
<div class="line"><a name="
|
|
1128
|
-
<div class="line"><a name="
|
|
1129
|
-
<div class="line"><a name="
|
|
1130
|
-
<div class="line"><a name="
|
|
1131
|
-
<div class="line"><a name="
|
|
1132
|
-
<div class="line"><a name="
|
|
1133
|
-
<div class="line"><a name="
|
|
1134
|
-
<div class="line"><a name="
|
|
1135
|
-
<div class="line"><a name="
|
|
1136
|
-
<div class="line"><a name="
|
|
1137
|
-
<div class="line"><a name="
|
|
1138
|
-
<div class="line"><a name="
|
|
1139
|
-
<div class="line"><a name="
|
|
1140
|
-
<div class="line"><a name="
|
|
1141
|
-
<div class="line"><a name="
|
|
1142
|
-
<div class="line"><a name="
|
|
1143
|
-
<div class="line"><a name="
|
|
1144
|
-
<div class="line"><a name="
|
|
1145
|
-
<div class="line"><a name="
|
|
1146
|
-
<div class="line"><a name="
|
|
1154
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00287">287</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1155
|
+
<div class="fragment"><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> {</div>
|
|
1156
|
+
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">if</span> (!curInst->isTerminator())</div>
|
|
1157
|
+
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  {</div>
|
|
1158
|
+
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst->getNextNode();</div>
|
|
1159
|
+
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(nextInst);</div>
|
|
1160
|
+
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
|
|
1161
|
+
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
|
|
1162
|
+
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">else</span></div>
|
|
1163
|
+
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  instList.push_back(svfNextInst);</div>
|
|
1164
|
+
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div>
|
|
1165
|
+
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">else</span></div>
|
|
1166
|
+
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  {</div>
|
|
1167
|
+
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst->getParent();</div>
|
|
1168
|
+
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div>
|
|
1169
|
+
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div>
|
|
1170
|
+
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div>
|
|
1171
|
+
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &((*it)->front());</div>
|
|
1172
|
+
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(nextInst);</div>
|
|
1173
|
+
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
|
|
1174
|
+
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
|
|
1175
|
+
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">else</span></div>
|
|
1176
|
+
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  instList.push_back(svfNextInst);</div>
|
|
1177
|
+
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div>
|
|
1178
|
+
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div>
|
|
1179
|
+
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> }</div>
|
|
1147
1180
|
</div><!-- fragment -->
|
|
1148
1181
|
</div>
|
|
1149
1182
|
</div>
|
|
@@ -1175,30 +1208,30 @@ Functions</h2></td></tr>
|
|
|
1175
1208
|
|
|
1176
1209
|
<p>Get the previous instructions following control flow. </p>
|
|
1177
1210
|
|
|
1178
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1179
|
-
<div class="fragment"><div class="line"><a name="
|
|
1180
|
-
<div class="line"><a name="
|
|
1181
|
-
<div class="line"><a name="
|
|
1182
|
-
<div class="line"><a name="
|
|
1183
|
-
<div class="line"><a name="
|
|
1184
|
-
<div class="line"><a name="
|
|
1185
|
-
<div class="line"><a name="
|
|
1186
|
-
<div class="line"><a name="
|
|
1187
|
-
<div class="line"><a name="
|
|
1188
|
-
<div class="line"><a name="
|
|
1189
|
-
<div class="line"><a name="
|
|
1190
|
-
<div class="line"><a name="
|
|
1191
|
-
<div class="line"><a name="
|
|
1192
|
-
<div class="line"><a name="
|
|
1193
|
-
<div class="line"><a name="
|
|
1194
|
-
<div class="line"><a name="
|
|
1195
|
-
<div class="line"><a name="
|
|
1196
|
-
<div class="line"><a name="
|
|
1197
|
-
<div class="line"><a name="
|
|
1198
|
-
<div class="line"><a name="
|
|
1199
|
-
<div class="line"><a name="
|
|
1200
|
-
<div class="line"><a name="
|
|
1201
|
-
<div class="line"><a name="
|
|
1211
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00827">827</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1212
|
+
<div class="fragment"><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> {</div>
|
|
1213
|
+
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">if</span> (curInst != &(curInst->getParent()->front()))</div>
|
|
1214
|
+
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  {</div>
|
|
1215
|
+
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst->getPrevNode();</div>
|
|
1216
|
+
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
|
|
1217
|
+
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
|
|
1218
|
+
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="keywordflow">else</span></div>
|
|
1219
|
+
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  instList.push_back(prevInst);</div>
|
|
1220
|
+
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  }</div>
|
|
1221
|
+
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="keywordflow">else</span></div>
|
|
1222
|
+
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  {</div>
|
|
1223
|
+
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst->getParent();</div>
|
|
1224
|
+
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div>
|
|
1225
|
+
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div>
|
|
1226
|
+
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  {</div>
|
|
1227
|
+
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &((*it)->back());</div>
|
|
1228
|
+
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
|
|
1229
|
+
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
|
|
1230
|
+
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keywordflow">else</span></div>
|
|
1231
|
+
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  instList.push_back(prevInst);</div>
|
|
1232
|
+
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div>
|
|
1233
|
+
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  }</div>
|
|
1234
|
+
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span> }</div>
|
|
1202
1235
|
</div><!-- fragment -->
|
|
1203
1236
|
</div>
|
|
1204
1237
|
</div>
|
|
@@ -1230,33 +1263,33 @@ Functions</h2></td></tr>
|
|
|
1230
1263
|
|
|
1231
1264
|
<p>Get the previous instructions following control flow. </p>
|
|
1232
1265
|
|
|
1233
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1234
|
-
<div class="fragment"><div class="line"><a name="
|
|
1235
|
-
<div class="line"><a name="
|
|
1236
|
-
<div class="line"><a name="
|
|
1237
|
-
<div class="line"><a name="
|
|
1238
|
-
<div class="line"><a name="
|
|
1239
|
-
<div class="line"><a name="
|
|
1240
|
-
<div class="line"><a name="
|
|
1241
|
-
<div class="line"><a name="
|
|
1242
|
-
<div class="line"><a name="
|
|
1243
|
-
<div class="line"><a name="
|
|
1244
|
-
<div class="line"><a name="
|
|
1245
|
-
<div class="line"><a name="
|
|
1246
|
-
<div class="line"><a name="
|
|
1247
|
-
<div class="line"><a name="
|
|
1248
|
-
<div class="line"><a name="
|
|
1249
|
-
<div class="line"><a name="
|
|
1250
|
-
<div class="line"><a name="
|
|
1251
|
-
<div class="line"><a name="
|
|
1252
|
-
<div class="line"><a name="
|
|
1253
|
-
<div class="line"><a name="
|
|
1254
|
-
<div class="line"><a name="
|
|
1255
|
-
<div class="line"><a name="
|
|
1256
|
-
<div class="line"><a name="
|
|
1257
|
-
<div class="line"><a name="
|
|
1258
|
-
<div class="line"><a name="
|
|
1259
|
-
<div class="line"><a name="
|
|
1266
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00316">316</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1267
|
+
<div class="fragment"><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> {</div>
|
|
1268
|
+
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  </div>
|
|
1269
|
+
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">if</span> (curInst != &(curInst->getParent()->front()))</div>
|
|
1270
|
+
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div>
|
|
1271
|
+
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst->getPrevNode();</div>
|
|
1272
|
+
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(prevInst);</div>
|
|
1273
|
+
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
|
|
1274
|
+
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
|
|
1275
|
+
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">else</span></div>
|
|
1276
|
+
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  instList.push_back(svfPrevInst);</div>
|
|
1277
|
+
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div>
|
|
1278
|
+
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">else</span></div>
|
|
1279
|
+
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  {</div>
|
|
1280
|
+
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst->getParent();</div>
|
|
1281
|
+
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div>
|
|
1282
|
+
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div>
|
|
1283
|
+
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  {</div>
|
|
1284
|
+
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &((*it)->back());</div>
|
|
1285
|
+
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(prevInst);</div>
|
|
1286
|
+
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
|
|
1287
|
+
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
|
|
1288
|
+
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">else</span></div>
|
|
1289
|
+
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  instList.push_back(svfPrevInst);</div>
|
|
1290
|
+
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div>
|
|
1291
|
+
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  }</div>
|
|
1292
|
+
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> }</div>
|
|
1260
1293
|
</div><!-- fragment -->
|
|
1261
1294
|
</div>
|
|
1262
1295
|
</div>
|
|
@@ -1438,105 +1471,105 @@ Functions</h2></td></tr>
|
|
|
1438
1471
|
</div><div class="memdoc">
|
|
1439
1472
|
<p>Get the meta data (line number and file name) info of a LLVM value </p>
|
|
1440
1473
|
|
|
1441
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1442
|
-
<div class="fragment"><div class="line"><a name="
|
|
1443
|
-
<div class="line"><a name="
|
|
1444
|
-
<div class="line"><a name="
|
|
1445
|
-
<div class="line"><a name="
|
|
1446
|
-
<div class="line"><a name="
|
|
1447
|
-
<div class="line"><a name="
|
|
1448
|
-
<div class="line"><a name="
|
|
1449
|
-
<div class="line"><a name="
|
|
1450
|
-
<div class="line"><a name="
|
|
1451
|
-
<div class="line"><a name="
|
|
1452
|
-
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  {</div>
|
|
1453
|
-
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgAddrUses(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>*<span class="keyword">></span>(inst)))</div>
|
|
1454
|
-
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  {</div>
|
|
1455
|
-
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast<llvm::DbgDeclareInst>(DII))</div>
|
|
1456
|
-
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  {</div>
|
|
1457
|
-
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  llvm::DIVariable *DIVar = SVFUtil::cast<llvm::DIVariable>(DDI->getVariable());</div>
|
|
1458
|
-
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << DIVar->getLine() << <span class="stringliteral">", \"fl\": \""</span> << DIVar->getFilename().str() << <span class="stringliteral">"\""</span>;</div>
|
|
1459
|
-
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">break</span>;</div>
|
|
1460
|
-
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div>
|
|
1461
|
-
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  }</div>
|
|
1462
|
-
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  }</div>
|
|
1463
|
-
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst->getMetadata(<span class="stringliteral">"dbg"</span>)) <span class="comment">// Here I is an LLVM instruction</span></div>
|
|
1474
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00679">679</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1475
|
+
<div class="fragment"><div class="line"><a name="l00680"></a><span class="lineno"> 680</span> {</div>
|
|
1476
|
+
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keywordflow">if</span>(val==<span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="stringliteral">"{ empty val }"</span>;</div>
|
|
1477
|
+
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  </div>
|
|
1478
|
+
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
1479
|
+
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  std::stringstream rawstr(str);</div>
|
|
1480
|
+
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  rawstr << <span class="stringliteral">"{ "</span>;</div>
|
|
1481
|
+
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  </div>
|
|
1482
|
+
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast<Instruction>(val))</div>
|
|
1483
|
+
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  {</div>
|
|
1484
|
+
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keywordflow">if</span> (SVFUtil::isa<AllocaInst>(inst))</div>
|
|
1464
1485
|
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  {</div>
|
|
1465
|
-
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  llvm::
|
|
1466
|
-
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span> 
|
|
1467
|
-
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span> 
|
|
1468
|
-
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span> 
|
|
1469
|
-
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span> 
|
|
1470
|
-
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span> 
|
|
1471
|
-
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span> 
|
|
1472
|
-
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span> 
|
|
1473
|
-
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span> 
|
|
1474
|
-
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span> 
|
|
1475
|
-
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span> 
|
|
1476
|
-
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span> 
|
|
1477
|
-
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span> 
|
|
1478
|
-
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span> 
|
|
1479
|
-
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span> 
|
|
1480
|
-
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span> 
|
|
1481
|
-
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span> 
|
|
1482
|
-
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span> 
|
|
1483
|
-
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span> 
|
|
1484
|
-
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span> 
|
|
1485
|
-
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span> 
|
|
1486
|
-
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span> 
|
|
1487
|
-
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span> 
|
|
1488
|
-
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span> 
|
|
1489
|
-
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span> 
|
|
1490
|
-
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> 
|
|
1491
|
-
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span> 
|
|
1492
|
-
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  rawstr <<
|
|
1493
|
-
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span> 
|
|
1494
|
-
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span> 
|
|
1495
|
-
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span> 
|
|
1496
|
-
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> 
|
|
1497
|
-
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span> 
|
|
1498
|
-
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> 
|
|
1499
|
-
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <
|
|
1500
|
-
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span> 
|
|
1501
|
-
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span> 
|
|
1502
|
-
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span> 
|
|
1503
|
-
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span> 
|
|
1504
|
-
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span> 
|
|
1505
|
-
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span> 
|
|
1506
|
-
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span> 
|
|
1507
|
-
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span> 
|
|
1508
|
-
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  </div>
|
|
1509
|
-
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span> 
|
|
1510
|
-
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span> 
|
|
1511
|
-
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span> 
|
|
1512
|
-
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span> 
|
|
1513
|
-
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span> 
|
|
1514
|
-
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span> 
|
|
1515
|
-
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span> 
|
|
1516
|
-
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span> 
|
|
1517
|
-
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span> 
|
|
1518
|
-
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span> 
|
|
1519
|
-
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span> 
|
|
1520
|
-
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span> 
|
|
1521
|
-
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span> 
|
|
1522
|
-
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span> 
|
|
1523
|
-
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span> 
|
|
1524
|
-
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span> 
|
|
1525
|
-
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span> 
|
|
1526
|
-
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span> 
|
|
1527
|
-
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span> 
|
|
1528
|
-
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span> 
|
|
1486
|
+
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgAddrUses(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>*<span class="keyword">></span>(inst)))</div>
|
|
1487
|
+
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  {</div>
|
|
1488
|
+
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast<llvm::DbgDeclareInst>(DII))</div>
|
|
1489
|
+
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  {</div>
|
|
1490
|
+
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  llvm::DIVariable *DIVar = SVFUtil::cast<llvm::DIVariable>(DDI->getVariable());</div>
|
|
1491
|
+
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << DIVar->getLine() << <span class="stringliteral">", \"fl\": \""</span> << DIVar->getFilename().str() << <span class="stringliteral">"\""</span>;</div>
|
|
1492
|
+
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keywordflow">break</span>;</div>
|
|
1493
|
+
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  }</div>
|
|
1494
|
+
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  }</div>
|
|
1495
|
+
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  }</div>
|
|
1496
|
+
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst->getMetadata(<span class="stringliteral">"dbg"</span>)) <span class="comment">// Here I is an LLVM instruction</span></div>
|
|
1497
|
+
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  {</div>
|
|
1498
|
+
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  llvm::DILocation* Loc = SVFUtil::cast<llvm::DILocation>(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
|
|
1499
|
+
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordtype">unsigned</span> Line = Loc->getLine();</div>
|
|
1500
|
+
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordtype">unsigned</span> Column = Loc->getColumn();</div>
|
|
1501
|
+
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc->getFilename().str();</div>
|
|
1502
|
+
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
|
|
1503
|
+
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
|
|
1504
|
+
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  {</div>
|
|
1505
|
+
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keyword">auto</span> inlineLoc = Loc->getInlinedAt();</div>
|
|
1506
|
+
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keywordflow">if</span>(inlineLoc)</div>
|
|
1507
|
+
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  {</div>
|
|
1508
|
+
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  Line = inlineLoc->getLine();</div>
|
|
1509
|
+
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  Column = inlineLoc->getColumn();</div>
|
|
1510
|
+
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  File = inlineLoc->getFilename().str();</div>
|
|
1511
|
+
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  }</div>
|
|
1512
|
+
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  }</div>
|
|
1513
|
+
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << Line << <span class="stringliteral">", \"cl\": "</span> << Column << <span class="stringliteral">", \"fl\": \""</span> << File << <span class="stringliteral">"\""</span>;</div>
|
|
1514
|
+
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  }</div>
|
|
1515
|
+
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  }</div>
|
|
1516
|
+
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* argument = SVFUtil::dyn_cast<Argument>(val))</div>
|
|
1517
|
+
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  {</div>
|
|
1518
|
+
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <span class="keywordflow">if</span> (argument->getArgNo()%10 == 1)</div>
|
|
1519
|
+
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"st"</span>;</div>
|
|
1520
|
+
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument->getArgNo()%10 == 2)</div>
|
|
1521
|
+
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"nd"</span>;</div>
|
|
1522
|
+
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument->getArgNo()%10 == 3)</div>
|
|
1523
|
+
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"rd"</span>;</div>
|
|
1524
|
+
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="keywordflow">else</span></div>
|
|
1525
|
+
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"th"</span>;</div>
|
|
1526
|
+
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  rawstr << <span class="stringliteral">" arg "</span> << argument->getParent()->getName().str() << <span class="stringliteral">" "</span></div>
|
|
1527
|
+
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument->getParent());</div>
|
|
1528
|
+
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  }</div>
|
|
1529
|
+
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast<GlobalVariable>(val))</div>
|
|
1530
|
+
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  {</div>
|
|
1531
|
+
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  rawstr << <span class="stringliteral">"Glob "</span>;</div>
|
|
1532
|
+
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a>* CU_Nodes = gvar->getParent()->getNamedMetadata(<span class="stringliteral">"llvm.dbg.cu"</span>);</div>
|
|
1533
|
+
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="keywordflow">if</span>(CU_Nodes)</div>
|
|
1534
|
+
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  {</div>
|
|
1535
|
+
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes->getNumOperands(); i != e; ++i)</div>
|
|
1536
|
+
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  {</div>
|
|
1537
|
+
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  llvm::DICompileUnit *CUNode = SVFUtil::cast<llvm::DICompileUnit>(CU_Nodes->getOperand(i));</div>
|
|
1538
|
+
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode->getGlobalVariables())</div>
|
|
1539
|
+
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  {</div>
|
|
1540
|
+
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  llvm::DIGlobalVariable * DGV = GV->getVariable();</div>
|
|
1541
|
+
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  </div>
|
|
1542
|
+
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordflow">if</span>(DGV->getName() == gvar->getName())</div>
|
|
1543
|
+
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  {</div>
|
|
1544
|
+
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << DGV->getLine() << <span class="stringliteral">", \"fl\": \""</span> << DGV->getFilename().str() << <span class="stringliteral">"\""</span>;</div>
|
|
1545
|
+
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  }</div>
|
|
1546
|
+
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  </div>
|
|
1547
|
+
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  }</div>
|
|
1548
|
+
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  }</div>
|
|
1549
|
+
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  }</div>
|
|
1529
1550
|
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  }</div>
|
|
1530
|
-
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">else</span
|
|
1551
|
+
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast<Function>(val))</div>
|
|
1531
1552
|
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  {</div>
|
|
1532
|
-
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  rawstr << <
|
|
1553
|
+
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  rawstr << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
|
|
1533
1554
|
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  }</div>
|
|
1534
|
-
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span> 
|
|
1535
|
-
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> 
|
|
1536
|
-
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> 
|
|
1537
|
-
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span> 
|
|
1538
|
-
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keywordflow">
|
|
1539
|
-
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span> 
|
|
1555
|
+
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast<BasicBlock>(val))</div>
|
|
1556
|
+
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  {</div>
|
|
1557
|
+
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  rawstr << <span class="stringliteral">"\"basic block\": "</span> << bb->getName().str() << <span class="stringliteral">", \"location\": "</span> << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(bb->getFirstNonPHI());</div>
|
|
1558
|
+
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  }</div>
|
|
1559
|
+
<div class="line"><a name="l00764"></a><span class="lineno"> 764</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>
|
|
1560
|
+
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  {</div>
|
|
1561
|
+
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  rawstr << <span class="stringliteral">"constant data"</span>;</div>
|
|
1562
|
+
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  }</div>
|
|
1563
|
+
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <span class="keywordflow">else</span></div>
|
|
1564
|
+
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  {</div>
|
|
1565
|
+
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  rawstr << <span class="stringliteral">"N/A"</span>;</div>
|
|
1566
|
+
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  }</div>
|
|
1567
|
+
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  rawstr << <span class="stringliteral">" }"</span>;</div>
|
|
1568
|
+
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  </div>
|
|
1569
|
+
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">"{ }"</span>)</div>
|
|
1570
|
+
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
|
|
1571
|
+
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
1572
|
+
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span> }</div>
|
|
1540
1573
|
</div><!-- fragment -->
|
|
1541
1574
|
</div>
|
|
1542
1575
|
</div>
|
|
@@ -1557,21 +1590,21 @@ Functions</h2></td></tr>
|
|
|
1557
1590
|
</div><div class="memdoc">
|
|
1558
1591
|
<p>Get source code line number of a function according to debug info </p>
|
|
1559
1592
|
|
|
1560
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1561
|
-
<div class="fragment"><div class="line"><a name="
|
|
1562
|
-
<div class="line"><a name="
|
|
1563
|
-
<div class="line"><a name="
|
|
1564
|
-
<div class="line"><a name="
|
|
1565
|
-
<div class="line"><a name="
|
|
1566
|
-
<div class="line"><a name="
|
|
1567
|
-
<div class="line"><a name="
|
|
1568
|
-
<div class="line"><a name="
|
|
1569
|
-
<div class="line"><a name="
|
|
1570
|
-
<div class="line"><a name="
|
|
1571
|
-
<div class="line"><a name="
|
|
1572
|
-
<div class="line"><a name="
|
|
1573
|
-
<div class="line"><a name="
|
|
1574
|
-
<div class="line"><a name="
|
|
1593
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00783">783</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1594
|
+
<div class="fragment"><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> {</div>
|
|
1595
|
+
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
1596
|
+
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  std::stringstream rawstr(str);</div>
|
|
1597
|
+
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="comment">/*</span></div>
|
|
1598
|
+
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
|
|
1599
|
+
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="comment"> * looks like the relevant</span></div>
|
|
1600
|
+
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span> <span class="comment"> */</span></div>
|
|
1601
|
+
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">llvm::DISubprogram</a> *SP = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getSubprogram())</div>
|
|
1602
|
+
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  {</div>
|
|
1603
|
+
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">if</span> (SP->describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
|
|
1604
|
+
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << SP->getLine() << <span class="stringliteral">", \"file\": \""</span> << SP->getFilename().str() << <span class="stringliteral">"\""</span>;</div>
|
|
1605
|
+
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  }</div>
|
|
1606
|
+
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
1607
|
+
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span> }</div>
|
|
1575
1608
|
</div><!-- fragment -->
|
|
1576
1609
|
</div>
|
|
1577
1610
|
</div>
|
|
@@ -1607,15 +1640,15 @@ Functions</h2></td></tr>
|
|
|
1607
1640
|
<p>switch i32 %0, label sw.default [ i32 0, label sw.bb i32 1, label sw.bb1 i32 2, label sw.bb1 i32 3, label sw.bb1 i32 4, label sw.bb3 i32 6, label sw.bb3 i32 7, label sw.bb3 ]</p>
|
|
1608
1641
|
<p>We can get every case basic block and related case value: [ {sw.default, -1}, {sw.bb, 0}, {sw.bb1, 1}, {sw.bb1, 2}, {sw.bb1, 3}, {sw.bb3, 4}, {sw.bb3, 6}, {sw.bb3, 7}, ] Note: default case value is nullptr </p>
|
|
1609
1642
|
|
|
1610
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1611
|
-
<div class="fragment"><div class="line"><a name="
|
|
1612
|
-
<div class="line"><a name="
|
|
1613
|
-
<div class="line"><a name="
|
|
1614
|
-
<div class="line"><a name="
|
|
1615
|
-
<div class="line"><a name="
|
|
1616
|
-
<div class="line"><a name="
|
|
1617
|
-
<div class="line"><a name="
|
|
1618
|
-
<div class="line"><a name="
|
|
1643
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01244">1244</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1644
|
+
<div class="fragment"><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span> {</div>
|
|
1645
|
+
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  <span class="comment">// get default successor basic block and default case value (nullptr)</span></div>
|
|
1646
|
+
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
|
|
1647
|
+
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  </div>
|
|
1648
|
+
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  <span class="comment">// get normal case value and it's successor basic block</span></div>
|
|
1649
|
+
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& cs : switchInst.cases())</div>
|
|
1650
|
+
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
|
|
1651
|
+
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> }</div>
|
|
1619
1652
|
</div><!-- fragment -->
|
|
1620
1653
|
</div>
|
|
1621
1654
|
</div>
|
|
@@ -1635,27 +1668,27 @@ Functions</h2></td></tr>
|
|
|
1635
1668
|
</table>
|
|
1636
1669
|
</div><div class="memdoc">
|
|
1637
1670
|
|
|
1638
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1639
|
-
<div class="fragment"><div class="line"><a name="
|
|
1640
|
-
<div class="line"><a name="
|
|
1641
|
-
<div class="line"><a name="
|
|
1642
|
-
<div class="line"><a name="
|
|
1643
|
-
<div class="line"><a name="
|
|
1644
|
-
<div class="line"><a name="
|
|
1645
|
-
<div class="line"><a name="
|
|
1646
|
-
<div class="line"><a name="
|
|
1647
|
-
<div class="line"><a name="
|
|
1648
|
-
<div class="line"><a name="
|
|
1649
|
-
<div class="line"><a name="
|
|
1650
|
-
<div class="line"><a name="
|
|
1651
|
-
<div class="line"><a name="
|
|
1652
|
-
<div class="line"><a name="
|
|
1653
|
-
<div class="line"><a name="
|
|
1654
|
-
<div class="line"><a name="
|
|
1655
|
-
<div class="line"><a name="
|
|
1656
|
-
<div class="line"><a name="
|
|
1657
|
-
<div class="line"><a name="
|
|
1658
|
-
<div class="line"><a name="
|
|
1671
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00979">979</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1672
|
+
<div class="fragment"><div class="line"><a name="l00980"></a><span class="lineno"> 980</span> {</div>
|
|
1673
|
+
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* ret = <span class="keyword">nullptr</span>;</div>
|
|
1674
|
+
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  </div>
|
|
1675
|
+
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& bb : *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
1676
|
+
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  {</div>
|
|
1677
|
+
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& inst : bb)</div>
|
|
1678
|
+
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  {</div>
|
|
1679
|
+
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::dyn_cast<CallBase>(&inst))</div>
|
|
1680
|
+
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  {</div>
|
|
1681
|
+
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="comment">// assert(cs.getCalledFunction() &&</span></div>
|
|
1682
|
+
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <span class="comment">// "Indirect call detected in thunk func");</span></div>
|
|
1683
|
+
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="comment">// assert(ret == nullptr && "multiple callsites in thunk func");</span></div>
|
|
1684
|
+
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  </div>
|
|
1685
|
+
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  ret = callbase->getCalledFunction();</div>
|
|
1686
|
+
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  }</div>
|
|
1687
|
+
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  }</div>
|
|
1688
|
+
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  }</div>
|
|
1689
|
+
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  </div>
|
|
1690
|
+
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  <span class="keywordflow">return</span> ret;</div>
|
|
1691
|
+
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span> }</div>
|
|
1659
1692
|
</div><!-- fragment -->
|
|
1660
1693
|
</div>
|
|
1661
1694
|
</div>
|
|
@@ -1678,33 +1711,33 @@ Functions</h2></td></tr>
|
|
|
1678
1711
|
<p>Get the type of the heap allocation. </p>
|
|
1679
1712
|
<p>Return the type of the object from a heap allocation </p>
|
|
1680
1713
|
|
|
1681
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1682
|
-
<div class="fragment"><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="
|
|
1714
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00368">368</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1715
|
+
<div class="fragment"><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> {</div>
|
|
1716
|
+
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast<PointerType>(inst->getType());</div>
|
|
1717
|
+
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfinst = LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(inst);</div>
|
|
1718
|
+
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfinst))</div>
|
|
1719
|
+
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  {</div>
|
|
1720
|
+
<div class="line"><a name="l00374"></a><span class="lineno"> 374</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#a837d19c740902c419206287bdb21273b">getUniqueUseViaCastInst</a>(inst))</div>
|
|
1721
|
+
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  {</div>
|
|
1722
|
+
<div class="line"><a name="l00376"></a><span class="lineno"> 376</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>
|
|
1723
|
+
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = newTy;</div>
|
|
1724
|
+
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  }</div>
|
|
1725
|
+
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  }</div>
|
|
1726
|
+
<div class="line"><a name="l00380"></a><span class="lineno"> 380</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>
|
|
1727
|
+
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  {</div>
|
|
1728
|
+
<div class="line"><a name="l00382"></a><span class="lineno"> 382</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>
|
|
1729
|
+
<div class="line"><a name="l00383"></a><span class="lineno"> 383</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>
|
|
1730
|
+
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* arg = cs->getArgOperand(arg_pos);</div>
|
|
1731
|
+
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast<PointerType>(arg->getType());</div>
|
|
1732
|
+
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div>
|
|
1733
|
+
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">else</span></div>
|
|
1734
|
+
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  {</div>
|
|
1735
|
+
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  assert( <span class="keyword">false</span> && <span class="stringliteral">"not a heap allocation instruction?"</span>);</div>
|
|
1736
|
+
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div>
|
|
1737
|
+
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  </div>
|
|
1738
|
+
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> && <span class="stringliteral">"not a pointer type?"</span>);</div>
|
|
1739
|
+
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>);</div>
|
|
1740
|
+
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span> }</div>
|
|
1708
1741
|
</div><!-- fragment -->
|
|
1709
1742
|
</div>
|
|
1710
1743
|
</div>
|
|
@@ -1735,15 +1768,15 @@ Functions</h2></td></tr>
|
|
|
1735
1768
|
</div><div class="memdoc">
|
|
1736
1769
|
<p>if this struct type does not have any element, i.e., opaque</p>
|
|
1737
1770
|
|
|
1738
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1739
|
-
<div class="fragment"><div class="line"><a name="
|
|
1740
|
-
<div class="line"><a name="
|
|
1741
|
-
<div class="line"><a name="
|
|
1742
|
-
<div class="line"><a name="
|
|
1743
|
-
<div class="line"><a name="
|
|
1744
|
-
<div class="line"><a name="
|
|
1745
|
-
<div class="line"><a name="
|
|
1746
|
-
<div class="line"><a name="
|
|
1771
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00665">665</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1772
|
+
<div class="fragment"><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> {</div>
|
|
1773
|
+
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  </div>
|
|
1774
|
+
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">StructLayout</a> *stTySL = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()->getMainLLVMModule())->getStructLayout( <span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *<span class="keyword">></span>(sty) );</div>
|
|
1775
|
+
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keywordflow">if</span>(sty->isOpaque())</div>
|
|
1776
|
+
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordflow">return</span> 0;</div>
|
|
1777
|
+
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordflow">else</span></div>
|
|
1778
|
+
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordflow">return</span> stTySL->getElementOffset(field_idx);</div>
|
|
1779
|
+
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span> }</div>
|
|
1747
1780
|
</div><!-- fragment -->
|
|
1748
1781
|
</div>
|
|
1749
1782
|
</div>
|
|
@@ -1765,14 +1798,14 @@ Functions</h2></td></tr>
|
|
|
1765
1798
|
|
|
1766
1799
|
<p>Helper method to get the size of the type from target data layout. </p>
|
|
1767
1800
|
|
|
1768
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1769
|
-
<div class="fragment"><div class="line"><a name="
|
|
1770
|
-
<div class="line"><a name="
|
|
1771
|
-
<div class="line"><a name="
|
|
1772
|
-
<div class="line"><a name="
|
|
1773
|
-
<div class="line"><a name="
|
|
1774
|
-
<div class="line"><a name="
|
|
1775
|
-
<div class="line"><a name="
|
|
1801
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00656">656</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1802
|
+
<div class="fragment"><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> {</div>
|
|
1803
|
+
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
|
|
1804
|
+
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>->isSized())</div>
|
|
1805
|
+
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(LLVMModuleSet::getLLVMModuleSet()->getMainLLVMModule())->getTypeStoreSize(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>*<span class="keyword">></span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>));</div>
|
|
1806
|
+
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">else</span></div>
|
|
1807
|
+
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="keywordflow">return</span> 0;</div>
|
|
1808
|
+
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> }</div>
|
|
1776
1809
|
</div><!-- fragment -->
|
|
1777
1810
|
</div>
|
|
1778
1811
|
</div>
|
|
@@ -1794,20 +1827,20 @@ Functions</h2></td></tr>
|
|
|
1794
1827
|
<p>Return the bitcast instruction which is val's only use site, otherwise return nullptr </p>
|
|
1795
1828
|
<p>If type is void* (i8*) and val is only used at a bitcast instruction</p>
|
|
1796
1829
|
|
|
1797
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1798
|
-
<div class="fragment"><div class="line"><a name="
|
|
1799
|
-
<div class="line"><a name="
|
|
1800
|
-
<div class="line"><a name="
|
|
1801
|
-
<div class="line"><a name="
|
|
1802
|
-
<div class="line"><a name="
|
|
1803
|
-
<div class="line"><a name="
|
|
1804
|
-
<div class="line"><a name="
|
|
1805
|
-
<div class="line"><a name="
|
|
1806
|
-
<div class="line"><a name="
|
|
1807
|
-
<div class="line"><a name="
|
|
1808
|
-
<div class="line"><a name="
|
|
1809
|
-
<div class="line"><a name="
|
|
1810
|
-
<div class="line"><a name="
|
|
1830
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00349">349</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1831
|
+
<div class="fragment"><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> {</div>
|
|
1832
|
+
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast<PointerType>(val->getType());</div>
|
|
1833
|
+
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> && <span class="stringliteral">"this value should be a pointer type!"</span>);</div>
|
|
1834
|
+
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a> *IT = SVFUtil::dyn_cast<IntegerType>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)))</div>
|
|
1835
|
+
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  {</div>
|
|
1836
|
+
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">if</span> (IT->getBitWidth() == 8 && val->getNumUses()==1)</div>
|
|
1837
|
+
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  {</div>
|
|
1838
|
+
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">Use</a> *u = &*val->use_begin();</div>
|
|
1839
|
+
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">return</span> SVFUtil::dyn_cast<BitCastInst>(u->getUser());</div>
|
|
1840
|
+
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  }</div>
|
|
1841
|
+
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div>
|
|
1842
|
+
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
1843
|
+
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> }</div>
|
|
1811
1844
|
</div><!-- fragment -->
|
|
1812
1845
|
</div>
|
|
1813
1846
|
</div>
|
|
@@ -1827,28 +1860,28 @@ Functions</h2></td></tr>
|
|
|
1827
1860
|
</table>
|
|
1828
1861
|
</div><div class="memdoc">
|
|
1829
1862
|
|
|
1830
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1831
|
-
<div class="fragment"><div class="line"><a name="
|
|
1832
|
-
<div class="line"><a name="
|
|
1833
|
-
<div class="line"><a name="
|
|
1834
|
-
<div class="line"><a name="
|
|
1835
|
-
<div class="line"><a name="
|
|
1836
|
-
<div class="line"><a name="
|
|
1837
|
-
<div class="line"><a name="
|
|
1838
|
-
<div class="line"><a name="
|
|
1839
|
-
<div class="line"><a name="
|
|
1840
|
-
<div class="line"><a name="
|
|
1841
|
-
<div class="line"><a name="
|
|
1842
|
-
<div class="line"><a name="
|
|
1843
|
-
<div class="line"><a name="
|
|
1844
|
-
<div class="line"><a name="
|
|
1845
|
-
<div class="line"><a name="
|
|
1846
|
-
<div class="line"><a name="
|
|
1847
|
-
<div class="line"><a name="
|
|
1848
|
-
<div class="line"><a name="
|
|
1849
|
-
<div class="line"><a name="
|
|
1850
|
-
<div class="line"><a name="
|
|
1851
|
-
<div class="line"><a name="
|
|
1863
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01221">1221</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1864
|
+
<div class="fragment"><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span> {</div>
|
|
1865
|
+
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst =</div>
|
|
1866
|
+
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  SVFUtil::dyn_cast<LoadInst>(cs->getCalledOperand());</div>
|
|
1867
|
+
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  assert(vfuncloadinst != <span class="keyword">nullptr</span>);</div>
|
|
1868
|
+
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst->getPointerOperand();</div>
|
|
1869
|
+
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
|
|
1870
|
+
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  SVFUtil::dyn_cast<GetElementPtrInst>(vfuncptr);</div>
|
|
1871
|
+
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  User::const_op_iterator oi = vfuncptrgepinst->idx_begin();</div>
|
|
1872
|
+
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* idx = SVFUtil::dyn_cast<ConstantInt>(oi->get());</div>
|
|
1873
|
+
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> idx_value;</div>
|
|
1874
|
+
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  <span class="keywordflow">if</span> (idx == <span class="keyword">nullptr</span>)</div>
|
|
1875
|
+
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  {</div>
|
|
1876
|
+
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"vcall gep idx not constantint\n"</span>;</div>
|
|
1877
|
+
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  idx_value = 0;</div>
|
|
1878
|
+
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  }</div>
|
|
1879
|
+
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  <span class="keywordflow">else</span></div>
|
|
1880
|
+
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  {</div>
|
|
1881
|
+
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  idx_value = (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)idx->getSExtValue();</div>
|
|
1882
|
+
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  }</div>
|
|
1883
|
+
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  <span class="keywordflow">return</span> idx_value;</div>
|
|
1884
|
+
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span> }</div>
|
|
1852
1885
|
</div><!-- fragment -->
|
|
1853
1886
|
</div>
|
|
1854
1887
|
</div>
|
|
@@ -1868,17 +1901,17 @@ Functions</h2></td></tr>
|
|
|
1868
1901
|
</table>
|
|
1869
1902
|
</div><div class="memdoc">
|
|
1870
1903
|
|
|
1871
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1872
|
-
<div class="fragment"><div class="line"><a name="
|
|
1873
|
-
<div class="line"><a name="
|
|
1874
|
-
<div class="line"><a name="
|
|
1875
|
-
<div class="line"><a name="
|
|
1876
|
-
<div class="line"><a name="
|
|
1877
|
-
<div class="line"><a name="
|
|
1878
|
-
<div class="line"><a name="
|
|
1879
|
-
<div class="line"><a name="
|
|
1880
|
-
<div class="line"><a name="
|
|
1881
|
-
<div class="line"><a name="
|
|
1904
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01001">1001</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1905
|
+
<div class="fragment"><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> {</div>
|
|
1906
|
+
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <span class="keywordflow">if</span> (cs->paramHasAttr(0, llvm::Attribute::StructRet))</div>
|
|
1907
|
+
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  {</div>
|
|
1908
|
+
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <span class="keywordflow">return</span> cs->getArgOperand(1);</div>
|
|
1909
|
+
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  }</div>
|
|
1910
|
+
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keywordflow">else</span></div>
|
|
1911
|
+
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  {</div>
|
|
1912
|
+
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordflow">return</span> cs->getArgOperand(0);</div>
|
|
1913
|
+
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  }</div>
|
|
1914
|
+
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> }</div>
|
|
1882
1915
|
</div><!-- fragment -->
|
|
1883
1916
|
</div>
|
|
1884
1917
|
</div>
|
|
@@ -1898,18 +1931,18 @@ Functions</h2></td></tr>
|
|
|
1898
1931
|
</table>
|
|
1899
1932
|
</div><div class="memdoc">
|
|
1900
1933
|
|
|
1901
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1902
|
-
<div class="fragment"><div class="line"><a name="
|
|
1903
|
-
<div class="line"><a name="
|
|
1904
|
-
<div class="line"><a name="
|
|
1905
|
-
<div class="line"><a name="
|
|
1906
|
-
<div class="line"><a name="
|
|
1907
|
-
<div class="line"><a name="
|
|
1908
|
-
<div class="line"><a name="
|
|
1909
|
-
<div class="line"><a name="
|
|
1910
|
-
<div class="line"><a name="
|
|
1911
|
-
<div class="line"><a name="
|
|
1912
|
-
<div class="line"><a name="
|
|
1934
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01130">1130</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1935
|
+
<div class="fragment"><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> {</div>
|
|
1936
|
+
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* loadInst =</div>
|
|
1937
|
+
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  SVFUtil::dyn_cast<LoadInst>(cs->getCalledOperand());</div>
|
|
1938
|
+
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  assert(loadInst != <span class="keyword">nullptr</span>);</div>
|
|
1939
|
+
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = loadInst->getPointerOperand();</div>
|
|
1940
|
+
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gepInst =</div>
|
|
1941
|
+
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  SVFUtil::dyn_cast<GetElementPtrInst>(vfuncptr);</div>
|
|
1942
|
+
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  assert(gepInst != <span class="keyword">nullptr</span>);</div>
|
|
1943
|
+
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = gepInst->getPointerOperand();</div>
|
|
1944
|
+
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <span class="keywordflow">return</span> vtbl;</div>
|
|
1945
|
+
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> }</div>
|
|
1913
1946
|
</div><!-- fragment -->
|
|
1914
1947
|
</div>
|
|
1915
1948
|
</div>
|
|
@@ -1929,18 +1962,18 @@ Functions</h2></td></tr>
|
|
|
1929
1962
|
</table>
|
|
1930
1963
|
</div><div class="memdoc">
|
|
1931
1964
|
|
|
1932
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
1933
|
-
<div class="fragment"><div class="line"><a name="
|
|
1934
|
-
<div class="line"><a name="
|
|
1935
|
-
<div class="line"><a name="
|
|
1936
|
-
<div class="line"><a name="
|
|
1937
|
-
<div class="line"><a name="
|
|
1938
|
-
<div class="line"><a name="
|
|
1939
|
-
<div class="line"><a name="
|
|
1940
|
-
<div class="line"><a name="
|
|
1941
|
-
<div class="line"><a name="
|
|
1942
|
-
<div class="line"><a name="
|
|
1943
|
-
<div class="line"><a name="
|
|
1965
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00889">889</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
1966
|
+
<div class="fragment"><div class="line"><a name="l00890"></a><span class="lineno"> 890</span> {</div>
|
|
1967
|
+
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *vtblStruct = SVFUtil::dyn_cast<ConstantStruct>(vtbl->getOperand(0));</div>
|
|
1968
|
+
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  assert(vtblStruct && <span class="stringliteral">"Initializer of a vtable not a struct?"</span>);</div>
|
|
1969
|
+
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  </div>
|
|
1970
|
+
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <span class="keywordflow">if</span> (vtblStruct->getNumOperands() == 2 &&</div>
|
|
1971
|
+
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  SVFUtil::isa<ConstantStruct>(vtblStruct->getOperand(0)) &&</div>
|
|
1972
|
+
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  vtblStruct->getOperand(1)->getType()->isArrayTy())</div>
|
|
1973
|
+
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  <span class="keywordflow">return</span> SVFUtil::cast<ConstantStruct>(vtblStruct->getOperand(0));</div>
|
|
1974
|
+
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  </div>
|
|
1975
|
+
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keywordflow">return</span> vtblStruct;</div>
|
|
1976
|
+
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span> }</div>
|
|
1944
1977
|
</div><!-- fragment -->
|
|
1945
1978
|
</div>
|
|
1946
1979
|
</div>
|
|
@@ -2002,16 +2035,16 @@ Functions</h2></td></tr>
|
|
|
2002
2035
|
</table>
|
|
2003
2036
|
</div><div class="memdoc">
|
|
2004
2037
|
|
|
2005
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2006
|
-
<div class="fragment"><div class="line"><a name="
|
|
2007
|
-
<div class="line"><a name="
|
|
2008
|
-
<div class="line"><a name="
|
|
2009
|
-
<div class="line"><a name="
|
|
2010
|
-
<div class="line"><a name="
|
|
2011
|
-
<div class="line"><a name="
|
|
2012
|
-
<div class="line"><a name="
|
|
2013
|
-
<div class="line"><a name="
|
|
2014
|
-
<div class="line"><a name="
|
|
2038
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00309">309</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2039
|
+
<div class="fragment"><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> {</div>
|
|
2040
|
+
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div>
|
|
2041
|
+
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div>
|
|
2042
|
+
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">if</span> ((constExpr->getOpcode() >= Instruction::BinaryOpsBegin) &&</div>
|
|
2043
|
+
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  (constExpr->getOpcode() <= Instruction::BinaryOpsEnd))</div>
|
|
2044
|
+
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">return</span> constExpr;</div>
|
|
2045
|
+
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div>
|
|
2046
|
+
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
2047
|
+
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> }</div>
|
|
2015
2048
|
</div><!-- fragment -->
|
|
2016
2049
|
</div>
|
|
2017
2050
|
</div>
|
|
@@ -2138,15 +2171,15 @@ Functions</h2></td></tr>
|
|
|
2138
2171
|
</table>
|
|
2139
2172
|
</div><div class="memdoc">
|
|
2140
2173
|
|
|
2141
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2142
|
-
<div class="fragment"><div class="line"><a name="
|
|
2143
|
-
<div class="line"><a name="
|
|
2144
|
-
<div class="line"><a name="
|
|
2145
|
-
<div class="line"><a name="
|
|
2146
|
-
<div class="line"><a name="
|
|
2147
|
-
<div class="line"><a name="
|
|
2148
|
-
<div class="line"><a name="
|
|
2149
|
-
<div class="line"><a name="
|
|
2174
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00264">264</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2175
|
+
<div class="fragment"><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> {</div>
|
|
2176
|
+
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div>
|
|
2177
|
+
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  {</div>
|
|
2178
|
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span> (constExpr->getOpcode() == Instruction::BitCast)</div>
|
|
2179
|
+
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">return</span> constExpr;</div>
|
|
2180
|
+
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div>
|
|
2181
|
+
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
2182
|
+
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> }</div>
|
|
2150
2183
|
</div><!-- fragment -->
|
|
2151
2184
|
</div>
|
|
2152
2185
|
</div>
|
|
@@ -2174,16 +2207,16 @@ Functions</h2></td></tr>
|
|
|
2174
2207
|
</table>
|
|
2175
2208
|
</div><div class="memdoc">
|
|
2176
2209
|
|
|
2177
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2178
|
-
<div class="fragment"><div class="line"><a name="
|
|
2179
|
-
<div class="line"><a name="
|
|
2180
|
-
<div class="line"><a name="
|
|
2181
|
-
<div class="line"><a name="
|
|
2182
|
-
<div class="line"><a name="
|
|
2183
|
-
<div class="line"><a name="
|
|
2184
|
-
<div class="line"><a name="
|
|
2185
|
-
<div class="line"><a name="
|
|
2186
|
-
<div class="line"><a name="
|
|
2210
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00298">298</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2211
|
+
<div class="fragment"><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> {</div>
|
|
2212
|
+
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div>
|
|
2213
|
+
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  {</div>
|
|
2214
|
+
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span> (constExpr->getOpcode() == Instruction::ICmp ||</div>
|
|
2215
|
+
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  constExpr->getOpcode() == Instruction::FCmp)</div>
|
|
2216
|
+
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">return</span> constExpr;</div>
|
|
2217
|
+
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div>
|
|
2218
|
+
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
2219
|
+
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> }</div>
|
|
2187
2220
|
</div><!-- fragment -->
|
|
2188
2221
|
</div>
|
|
2189
2222
|
</div>
|
|
@@ -2205,10 +2238,10 @@ Functions</h2></td></tr>
|
|
|
2205
2238
|
|
|
2206
2239
|
<p>Check whether this value points-to a constant object. </p>
|
|
2207
2240
|
|
|
2208
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
2209
|
-
<div class="fragment"><div class="line"><a name="
|
|
2210
|
-
<div class="line"><a name="
|
|
2211
|
-
<div class="line"><a name="
|
|
2241
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00853">853</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2242
|
+
<div class="fragment"><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> {</div>
|
|
2243
|
+
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(LLVMModuleSet::getLLVMModuleSet()->getLLVMValue(val));</div>
|
|
2244
|
+
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span> }</div>
|
|
2212
2245
|
</div><!-- fragment -->
|
|
2213
2246
|
</div>
|
|
2214
2247
|
</div>
|
|
@@ -2231,33 +2264,33 @@ Functions</h2></td></tr>
|
|
|
2231
2264
|
<p>Check whether this value points-to a constant object. </p>
|
|
2232
2265
|
<p>Check whether this value points-to a constant object </p>
|
|
2233
2266
|
|
|
2234
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
2235
|
-
<div class="fragment"><div class="line"><a name="
|
|
2236
|
-
<div class="line"><a name="
|
|
2237
|
-
<div class="line"><a name="
|
|
2238
|
-
<div class="line"><a name="
|
|
2239
|
-
<div class="line"><a name="
|
|
2240
|
-
<div class="line"><a name="
|
|
2241
|
-
<div class="line"><a name="
|
|
2242
|
-
<div class="line"><a name="
|
|
2243
|
-
<div class="line"><a name="
|
|
2244
|
-
<div class="line"><a name="
|
|
2245
|
-
<div class="line"><a name="
|
|
2246
|
-
<div class="line"><a name="
|
|
2247
|
-
<div class="line"><a name="
|
|
2248
|
-
<div class="line"><a name="
|
|
2249
|
-
<div class="line"><a name="
|
|
2250
|
-
<div class="line"><a name="
|
|
2251
|
-
<div class="line"><a name="
|
|
2252
|
-
<div class="line"><a name="
|
|
2253
|
-
<div class="line"><a name="
|
|
2254
|
-
<div class="line"><a name="
|
|
2255
|
-
<div class="line"><a name="
|
|
2256
|
-
<div class="line"><a name="
|
|
2257
|
-
<div class="line"><a name="
|
|
2258
|
-
<div class="line"><a name="
|
|
2259
|
-
<div class="line"><a name="
|
|
2260
|
-
<div class="line"><a name="
|
|
2267
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00861">861</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2268
|
+
<div class="fragment"><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> {</div>
|
|
2269
|
+
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* v = SVFUtil::dyn_cast<GlobalVariable>(val))</div>
|
|
2270
|
+
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  {</div>
|
|
2271
|
+
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">LLVMUtil::isValVtbl</a>(v))</div>
|
|
2272
|
+
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2273
|
+
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v->hasInitializer())</div>
|
|
2274
|
+
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  {</div>
|
|
2275
|
+
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keywordflow">return</span> !v->isExternalLinkage(v->getLinkage());</div>
|
|
2276
|
+
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  }</div>
|
|
2277
|
+
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordflow">else</span></div>
|
|
2278
|
+
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  {</div>
|
|
2279
|
+
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> *stInfo = LLVMModuleSet::getLLVMModuleSet()->getSVFType(v->getInitializer()->getType())->getTypeInfo();</div>
|
|
2280
|
+
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="keyword">const</span> std::vector<const SVFType*> &fields = stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>();</div>
|
|
2281
|
+
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <span class="keywordflow">for</span> (std::vector<const SVFType*>::const_iterator it = fields.begin(), eit = fields.end(); it != eit; ++it)</div>
|
|
2282
|
+
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  {</div>
|
|
2283
|
+
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = *it;</div>
|
|
2284
|
+
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  assert(!SVFUtil::isa<SVFFunctionType>(elemTy) && <span class="stringliteral">"Initializer of a global is a function?"</span>);</div>
|
|
2285
|
+
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">if</span> (SVFUtil::isa<SVFPointerType>(elemTy))</div>
|
|
2286
|
+
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2287
|
+
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  }</div>
|
|
2288
|
+
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  </div>
|
|
2289
|
+
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordflow">return</span> v->isConstant();</div>
|
|
2290
|
+
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  }</div>
|
|
2291
|
+
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  }</div>
|
|
2292
|
+
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val);</div>
|
|
2293
|
+
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span> }</div>
|
|
2261
2294
|
</div><!-- fragment -->
|
|
2262
2295
|
</div>
|
|
2263
2296
|
</div>
|
|
@@ -2287,11 +2320,11 @@ Functions</h2></td></tr>
|
|
|
2287
2320
|
|
|
2288
2321
|
<p>Return true if the value refers to constant data, e.g., i32 0. </p>
|
|
2289
2322
|
|
|
2290
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2291
|
-
<div class="fragment"><div class="line"><a name="
|
|
2292
|
-
<div class="line"><a name="
|
|
2293
|
-
<div class="line"><a name="
|
|
2294
|
-
<div class="line"><a name="
|
|
2323
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00414">414</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2324
|
+
<div class="fragment"><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> {</div>
|
|
2325
|
+
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">SVFUtil::isa</a><<a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>, <a class="code" href="namespaceSVF.html#a7cbe1c6567039e72958fd70e423d3597">ConstantAggregate</a>,</div>
|
|
2326
|
+
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="namespaceSVF.html#a773900ea3c75022657aac1abf59fa51b">MetadataAsValue</a>, <a class="code" href="namespaceSVF.html#a956458a8554bf734db1194f320fd4b4c">BlockAddress</a>>(val);</div>
|
|
2327
|
+
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span> }</div>
|
|
2295
2328
|
</div><!-- fragment -->
|
|
2296
2329
|
</div>
|
|
2297
2330
|
</div>
|
|
@@ -2312,35 +2345,35 @@ Functions</h2></td></tr>
|
|
|
2312
2345
|
</div><div class="memdoc">
|
|
2313
2346
|
<p>TODO: on mac os function name is an empty string after demangling</p>
|
|
2314
2347
|
|
|
2315
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
2316
|
-
<div class="fragment"><div class="line"><a name="
|
|
2317
|
-
<div class="line"><a name="
|
|
2318
|
-
<div class="line"><a name="
|
|
2319
|
-
<div class="line"><a name="
|
|
2320
|
-
<div class="line"><a name="
|
|
2321
|
-
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  {</div>
|
|
2322
|
-
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2323
|
-
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  }</div>
|
|
2324
|
-
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
|
|
2325
|
-
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
|
|
2326
|
-
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  {</div>
|
|
2327
|
-
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2328
|
-
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  }</div>
|
|
2329
|
-
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
|
|
2330
|
-
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
|
|
2331
|
-
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">"::"</span>);</div>
|
|
2332
|
-
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <span class="keywordflow">if</span> (colon == std::string::npos)</div>
|
|
2348
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01060">1060</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2349
|
+
<div class="fragment"><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> {</div>
|
|
2350
|
+
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->isDeclaration())</div>
|
|
2351
|
+
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2352
|
+
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getName().str();</div>
|
|
2353
|
+
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
|
|
2333
2354
|
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  {</div>
|
|
2334
|
-
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> 
|
|
2355
|
+
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2335
2356
|
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  }</div>
|
|
2336
|
-
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <span class="
|
|
2337
|
-
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> 
|
|
2338
|
-
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> 
|
|
2339
|
-
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> 
|
|
2357
|
+
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
|
|
2358
|
+
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
|
|
2359
|
+
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  {</div>
|
|
2360
|
+
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2340
2361
|
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  }</div>
|
|
2341
|
-
<div class="line"><a name="
|
|
2342
|
-
<div class="line"><a name="
|
|
2343
|
-
<div class="line"><a name="
|
|
2362
|
+
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
|
|
2363
|
+
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
|
|
2364
|
+
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">"::"</span>);</div>
|
|
2365
|
+
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  <span class="keywordflow">if</span> (colon == std::string::npos)</div>
|
|
2366
|
+
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  {</div>
|
|
2367
|
+
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
|
|
2368
|
+
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  }</div>
|
|
2369
|
+
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <span class="keywordflow">else</span></div>
|
|
2370
|
+
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  {</div>
|
|
2371
|
+
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
|
|
2372
|
+
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
|
|
2373
|
+
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  }</div>
|
|
2374
|
+
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() > 0 &&</div>
|
|
2375
|
+
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>) == 0;</div>
|
|
2376
|
+
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> }</div>
|
|
2344
2377
|
</div><!-- fragment -->
|
|
2345
2378
|
</div>
|
|
2346
2379
|
</div>
|
|
@@ -2360,11 +2393,11 @@ Functions</h2></td></tr>
|
|
|
2360
2393
|
</table>
|
|
2361
2394
|
</div><div class="memdoc">
|
|
2362
2395
|
|
|
2363
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
2364
|
-
<div class="fragment"><div class="line"><a name="
|
|
2365
|
-
<div class="line"><a name="
|
|
2366
|
-
<div class="line"><a name="
|
|
2367
|
-
<div class="line"><a name="
|
|
2396
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00973">973</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2397
|
+
<div class="fragment"><div class="line"><a name="l00974"></a><span class="lineno"> 974</span> {</div>
|
|
2398
|
+
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getName().str());</div>
|
|
2399
|
+
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</div>
|
|
2400
|
+
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span> }</div>
|
|
2368
2401
|
</div><!-- fragment -->
|
|
2369
2402
|
</div>
|
|
2370
2403
|
</div>
|
|
@@ -2384,37 +2417,37 @@ Functions</h2></td></tr>
|
|
|
2384
2417
|
</table>
|
|
2385
2418
|
</div><div class="memdoc">
|
|
2386
2419
|
|
|
2387
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
2388
|
-
<div class="fragment"><div class="line"><a name="
|
|
2389
|
-
<div class="line"><a name="
|
|
2390
|
-
<div class="line"><a name="
|
|
2391
|
-
<div class="line"><a name="
|
|
2392
|
-
<div class="line"><a name="
|
|
2393
|
-
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  {</div>
|
|
2394
|
-
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2395
|
-
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  }</div>
|
|
2396
|
-
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
|
|
2397
|
-
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
|
|
2398
|
-
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  {</div>
|
|
2399
|
-
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2400
|
-
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  }</div>
|
|
2401
|
-
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
|
|
2402
|
-
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
|
|
2403
|
-
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">"::"</span>);</div>
|
|
2404
|
-
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <span class="keywordflow">if</span> (colon == std::string::npos)</div>
|
|
2420
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01091">1091</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2421
|
+
<div class="fragment"><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> {</div>
|
|
2422
|
+
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->isDeclaration())</div>
|
|
2423
|
+
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2424
|
+
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getName().str();</div>
|
|
2425
|
+
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
|
|
2405
2426
|
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  {</div>
|
|
2406
|
-
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> 
|
|
2427
|
+
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2407
2428
|
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  }</div>
|
|
2408
|
-
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="
|
|
2409
|
-
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> 
|
|
2410
|
-
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> 
|
|
2411
|
-
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> 
|
|
2429
|
+
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
|
|
2430
|
+
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
|
|
2431
|
+
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  {</div>
|
|
2432
|
+
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2412
2433
|
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  }</div>
|
|
2413
|
-
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> 
|
|
2414
|
-
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> 
|
|
2415
|
-
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> 
|
|
2416
|
-
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> 
|
|
2417
|
-
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> 
|
|
2434
|
+
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
|
|
2435
|
+
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
|
|
2436
|
+
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">"::"</span>);</div>
|
|
2437
|
+
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <span class="keywordflow">if</span> (colon == std::string::npos)</div>
|
|
2438
|
+
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  {</div>
|
|
2439
|
+
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
|
|
2440
|
+
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  }</div>
|
|
2441
|
+
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <span class="keywordflow">else</span></div>
|
|
2442
|
+
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  {</div>
|
|
2443
|
+
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
|
|
2444
|
+
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
|
|
2445
|
+
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  }</div>
|
|
2446
|
+
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <span class="keywordflow">return</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() > 0 && dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() > 0 &&</div>
|
|
2447
|
+
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() + 1 == dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &&</div>
|
|
2448
|
+
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.compare(0, 1, <span class="stringliteral">"~"</span>) == 0 &&</div>
|
|
2449
|
+
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.substr(1)) == 0);</div>
|
|
2450
|
+
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span> }</div>
|
|
2418
2451
|
</div><!-- fragment -->
|
|
2419
2452
|
</div>
|
|
2420
2453
|
</div>
|
|
@@ -2444,15 +2477,15 @@ Functions</h2></td></tr>
|
|
|
2444
2477
|
|
|
2445
2478
|
<p>Return corresponding constant expression, otherwise return nullptr. </p>
|
|
2446
2479
|
|
|
2447
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2448
|
-
<div class="fragment"><div class="line"><a name="
|
|
2449
|
-
<div class="line"><a name="
|
|
2450
|
-
<div class="line"><a name="
|
|
2451
|
-
<div class="line"><a name="
|
|
2452
|
-
<div class="line"><a name="
|
|
2453
|
-
<div class="line"><a name="
|
|
2454
|
-
<div class="line"><a name="
|
|
2455
|
-
<div class="line"><a name="
|
|
2480
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00234">234</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2481
|
+
<div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> {</div>
|
|
2482
|
+
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div>
|
|
2483
|
+
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div>
|
|
2484
|
+
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span> (constExpr->getOpcode() == Instruction::GetElementPtr)</div>
|
|
2485
|
+
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">return</span> constExpr;</div>
|
|
2486
|
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div>
|
|
2487
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
2488
|
+
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> }</div>
|
|
2456
2489
|
</div><!-- fragment -->
|
|
2457
2490
|
</div>
|
|
2458
2491
|
</div>
|
|
@@ -2480,15 +2513,15 @@ Functions</h2></td></tr>
|
|
|
2480
2513
|
</table>
|
|
2481
2514
|
</div><div class="memdoc">
|
|
2482
2515
|
|
|
2483
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2484
|
-
<div class="fragment"><div class="line"><a name="
|
|
2485
|
-
<div class="line"><a name="
|
|
2486
|
-
<div class="line"><a name="
|
|
2487
|
-
<div class="line"><a name="
|
|
2488
|
-
<div class="line"><a name="
|
|
2489
|
-
<div class="line"><a name="
|
|
2490
|
-
<div class="line"><a name="
|
|
2491
|
-
<div class="line"><a name="
|
|
2516
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00244">244</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2517
|
+
<div class="fragment"><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> {</div>
|
|
2518
|
+
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div>
|
|
2519
|
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  {</div>
|
|
2520
|
+
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">if</span> (constExpr->getOpcode() == Instruction::IntToPtr)</div>
|
|
2521
|
+
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> constExpr;</div>
|
|
2522
|
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div>
|
|
2523
|
+
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
2524
|
+
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> }</div>
|
|
2492
2525
|
</div><!-- fragment -->
|
|
2493
2526
|
</div>
|
|
2494
2527
|
</div>
|
|
@@ -2508,18 +2541,18 @@ Functions</h2></td></tr>
|
|
|
2508
2541
|
</table>
|
|
2509
2542
|
</div><div class="memdoc">
|
|
2510
2543
|
|
|
2511
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
2512
|
-
<div class="fragment"><div class="line"><a name="
|
|
2513
|
-
<div class="line"><a name="
|
|
2514
|
-
<div class="line"><a name="
|
|
2515
|
-
<div class="line"><a name="
|
|
2516
|
-
<div class="line"><a name="
|
|
2517
|
-
<div class="line"><a name="
|
|
2518
|
-
<div class="line"><a name="
|
|
2519
|
-
<div class="line"><a name="
|
|
2520
|
-
<div class="line"><a name="
|
|
2521
|
-
<div class="line"><a name="
|
|
2522
|
-
<div class="line"><a name="
|
|
2544
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00202">202</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2545
|
+
<div class="fragment"><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> {</div>
|
|
2546
|
+
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span> (func && (func->getIntrinsicID() == llvm::Intrinsic::donothing ||</div>
|
|
2547
|
+
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  func->getIntrinsicID() == llvm::Intrinsic::dbg_addr ||</div>
|
|
2548
|
+
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  func->getIntrinsicID() == llvm::Intrinsic::dbg_declare ||</div>
|
|
2549
|
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  func->getIntrinsicID() == llvm::Intrinsic::dbg_label ||</div>
|
|
2550
|
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  func->getIntrinsicID() == llvm::Intrinsic::dbg_value))</div>
|
|
2551
|
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  {</div>
|
|
2552
|
+
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
2553
|
+
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div>
|
|
2554
|
+
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2555
|
+
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> }</div>
|
|
2523
2556
|
</div><!-- fragment -->
|
|
2524
2557
|
</div>
|
|
2525
2558
|
</div>
|
|
@@ -2541,18 +2574,18 @@ Functions</h2></td></tr>
|
|
|
2541
2574
|
|
|
2542
2575
|
<p>Return true if it is an intrinsic instruction. </p>
|
|
2543
2576
|
|
|
2544
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
2545
|
-
<div class="fragment"><div class="line"><a name="
|
|
2546
|
-
<div class="line"><a name="
|
|
2547
|
-
<div class="line"><a name="
|
|
2548
|
-
<div class="line"><a name="
|
|
2549
|
-
<div class="line"><a name="
|
|
2550
|
-
<div class="line"><a name="
|
|
2551
|
-
<div class="line"><a name="
|
|
2552
|
-
<div class="line"><a name="
|
|
2553
|
-
<div class="line"><a name="
|
|
2554
|
-
<div class="line"><a name="
|
|
2555
|
-
<div class="line"><a name="
|
|
2577
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00216">216</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2578
|
+
<div class="fragment"><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> {</div>
|
|
2579
|
+
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast<CallBase>(inst))</div>
|
|
2580
|
+
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div>
|
|
2581
|
+
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = call->getCalledFunction();</div>
|
|
2582
|
+
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">isIntrinsicFun</a>(func))</div>
|
|
2583
|
+
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  {</div>
|
|
2584
|
+
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
2585
|
+
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div>
|
|
2586
|
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div>
|
|
2587
|
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2588
|
+
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> }</div>
|
|
2556
2589
|
</div><!-- fragment -->
|
|
2557
2590
|
</div>
|
|
2558
2591
|
</div>
|
|
@@ -2574,19 +2607,19 @@ Functions</h2></td></tr>
|
|
|
2574
2607
|
|
|
2575
2608
|
<p>Check whether a file is an LLVM IR file. </p>
|
|
2576
2609
|
|
|
2577
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
2578
|
-
<div class="fragment"><div class="line"><a name="
|
|
2579
|
-
<div class="line"><a name="
|
|
2580
|
-
<div class="line"><a name="
|
|
2581
|
-
<div class="line"><a name="
|
|
2582
|
-
<div class="line"><a name="
|
|
2583
|
-
<div class="line"><a name="
|
|
2584
|
-
<div class="line"><a name="
|
|
2585
|
-
<div class="line"><a name="
|
|
2586
|
-
<div class="line"><a name="
|
|
2587
|
-
<div class="line"><a name="
|
|
2588
|
-
<div class="line"><a name="
|
|
2589
|
-
<div class="line"><a name="
|
|
2610
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00412">412</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2611
|
+
<div class="fragment"><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> {</div>
|
|
2612
|
+
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> FileOrErr = llvm::MemoryBuffer::getFileOrSTDIN(filename);</div>
|
|
2613
|
+
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">if</span> (FileOrErr.getError())</div>
|
|
2614
|
+
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2615
|
+
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  llvm::MemoryBufferRef Buffer = FileOrErr.get()->getMemBufferRef();</div>
|
|
2616
|
+
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferStart =</div>
|
|
2617
|
+
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferStart();</div>
|
|
2618
|
+
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferEnd =</div>
|
|
2619
|
+
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferEnd();</div>
|
|
2620
|
+
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">return</span> llvm::isBitcode(bufferStart, bufferEnd) ? <a class="code" href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a> :</div>
|
|
2621
|
+
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  Buffer.getBuffer().startswith(<span class="stringliteral">"; ModuleID ="</span>);</div>
|
|
2622
|
+
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span> }</div>
|
|
2590
2623
|
</div><!-- fragment -->
|
|
2591
2624
|
</div>
|
|
2592
2625
|
</div>
|
|
@@ -2606,29 +2639,29 @@ Functions</h2></td></tr>
|
|
|
2606
2639
|
</table>
|
|
2607
2640
|
</div><div class="memdoc">
|
|
2608
2641
|
|
|
2609
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
2610
|
-
<div class="fragment"><div class="line"><a name="
|
|
2611
|
-
<div class="line"><a name="
|
|
2612
|
-
<div class="line"><a name="
|
|
2613
|
-
<div class="line"><a name="
|
|
2614
|
-
<div class="line"><a name="
|
|
2615
|
-
<div class="line"><a name="
|
|
2616
|
-
<div class="line"><a name="
|
|
2617
|
-
<div class="line"><a name="
|
|
2618
|
-
<div class="line"><a name="
|
|
2619
|
-
<div class="line"><a name="
|
|
2620
|
-
<div class="line"><a name="
|
|
2621
|
-
<div class="line"><a name="
|
|
2622
|
-
<div class="line"><a name="
|
|
2623
|
-
<div class="line"><a name="
|
|
2624
|
-
<div class="line"><a name="
|
|
2625
|
-
<div class="line"><a name="
|
|
2626
|
-
<div class="line"><a name="
|
|
2627
|
-
<div class="line"><a name="
|
|
2628
|
-
<div class="line"><a name="
|
|
2629
|
-
<div class="line"><a name="
|
|
2630
|
-
<div class="line"><a name="
|
|
2631
|
-
<div class="line"><a name="
|
|
2642
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00911">911</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2643
|
+
<div class="fragment"><div class="line"><a name="l00912"></a><span class="lineno"> 912</span> {</div>
|
|
2644
|
+
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* loadSrc = loadInst->getPointerOperand();</div>
|
|
2645
|
+
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* valTy = loadSrc->getType();</div>
|
|
2646
|
+
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = valTy;</div>
|
|
2647
|
+
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < 3; ++i)</div>
|
|
2648
|
+
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  {</div>
|
|
2649
|
+
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = SVFUtil::dyn_cast<PointerType>(elemTy))</div>
|
|
2650
|
+
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  elemTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrTy);</div>
|
|
2651
|
+
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="keywordflow">else</span></div>
|
|
2652
|
+
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2653
|
+
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  }</div>
|
|
2654
|
+
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* functy = SVFUtil::dyn_cast<FunctionType>(elemTy))</div>
|
|
2655
|
+
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  {</div>
|
|
2656
|
+
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* paramty = functy->getParamType(0);</div>
|
|
2657
|
+
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">LLVMUtil::getClassNameFromType</a>(paramty);</div>
|
|
2658
|
+
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keywordflow">if</span> (className.size() > 0)</div>
|
|
2659
|
+
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  {</div>
|
|
2660
|
+
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
2661
|
+
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  }</div>
|
|
2662
|
+
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  }</div>
|
|
2663
|
+
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2664
|
+
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span> }</div>
|
|
2632
2665
|
</div><!-- fragment -->
|
|
2633
2666
|
</div>
|
|
2634
2667
|
</div>
|
|
@@ -2789,15 +2822,15 @@ Functions</h2></td></tr>
|
|
|
2789
2822
|
</table>
|
|
2790
2823
|
</div><div class="memdoc">
|
|
2791
2824
|
|
|
2792
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2793
|
-
<div class="fragment"><div class="line"><a name="
|
|
2794
|
-
<div class="line"><a name="
|
|
2795
|
-
<div class="line"><a name="
|
|
2796
|
-
<div class="line"><a name="
|
|
2797
|
-
<div class="line"><a name="
|
|
2798
|
-
<div class="line"><a name="
|
|
2799
|
-
<div class="line"><a name="
|
|
2800
|
-
<div class="line"><a name="
|
|
2825
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00254">254</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2826
|
+
<div class="fragment"><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> {</div>
|
|
2827
|
+
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div>
|
|
2828
|
+
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  {</div>
|
|
2829
|
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span> (constExpr->getOpcode() == Instruction::PtrToInt)</div>
|
|
2830
|
+
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">return</span> constExpr;</div>
|
|
2831
|
+
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div>
|
|
2832
|
+
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
2833
|
+
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> }</div>
|
|
2801
2834
|
</div><!-- fragment -->
|
|
2802
2835
|
</div>
|
|
2803
2836
|
</div>
|
|
@@ -2820,20 +2853,20 @@ Functions</h2></td></tr>
|
|
|
2820
2853
|
<p>Return true if this is value in a dead function (function without any caller) </p>
|
|
2821
2854
|
<p>Return true if this is a value in a dead function (function without any caller) </p>
|
|
2822
2855
|
|
|
2823
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
2824
|
-
<div class="fragment"><div class="line"><a name="
|
|
2825
|
-
<div class="line"><a name="
|
|
2826
|
-
<div class="line"><a name="
|
|
2827
|
-
<div class="line"><a name="
|
|
2828
|
-
<div class="line"><a name="
|
|
2829
|
-
<div class="line"><a name="
|
|
2830
|
-
<div class="line"><a name="
|
|
2831
|
-
<div class="line"><a name="
|
|
2832
|
-
<div class="line"><a name="
|
|
2833
|
-
<div class="line"><a name="
|
|
2834
|
-
<div class="line"><a name="
|
|
2835
|
-
<div class="line"><a name="
|
|
2836
|
-
<div class="line"><a name="
|
|
2856
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00187">187</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2857
|
+
<div class="fragment"><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> {</div>
|
|
2858
|
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast<Instruction>(value))</div>
|
|
2859
|
+
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  {</div>
|
|
2860
|
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(inst->getParent()->getParent()))</div>
|
|
2861
|
+
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
2862
|
+
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div>
|
|
2863
|
+
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast<Argument>(value))</div>
|
|
2864
|
+
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div>
|
|
2865
|
+
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(arg->getParent()))</div>
|
|
2866
|
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
2867
|
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div>
|
|
2868
|
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2869
|
+
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> }</div>
|
|
2837
2870
|
</div><!-- fragment -->
|
|
2838
2871
|
</div>
|
|
2839
2872
|
</div>
|
|
@@ -2865,28 +2898,28 @@ Functions</h2></td></tr>
|
|
|
2865
2898
|
<p>Given a inheritance relation B is a child of A We assume B::B(thisPtr1){ A::A(thisPtr2) } such that thisPtr1 == thisPtr2 In the following code thisPtr1 is "%class.B1* %this" and thisPtr2 is "%class.A* %0".</p>
|
|
2866
2899
|
<p>define linkonce_odr dso_local void @B1::B1()(class.B1* this) unnamed_addr #6 comdat this.addr = alloca class.B1*, align 8 store class.B1* this, class.B1** this.addr, align 8 this1 = load class.B1*, class.B1** this.addr, align 8 %0 = bitcast class.B1* this1 to class.A* call void @A::A()(class.A* %0) </p>
|
|
2867
2900
|
|
|
2868
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
2869
|
-
<div class="fragment"><div class="line"><a name="
|
|
2870
|
-
<div class="line"><a name="
|
|
2871
|
-
<div class="line"><a name="
|
|
2872
|
-
<div class="line"><a name="
|
|
2873
|
-
<div class="line"><a name="
|
|
2874
|
-
<div class="line"><a name="
|
|
2875
|
-
<div class="line"><a name="
|
|
2876
|
-
<div class="line"><a name="
|
|
2877
|
-
<div class="line"><a name="
|
|
2878
|
-
<div class="line"><a name="
|
|
2879
|
-
<div class="line"><a name="
|
|
2880
|
-
<div class="line"><a name="
|
|
2881
|
-
<div class="line"><a name="
|
|
2882
|
-
<div class="line"><a name="
|
|
2883
|
-
<div class="line"><a name="
|
|
2884
|
-
<div class="line"><a name="
|
|
2885
|
-
<div class="line"><a name="
|
|
2886
|
-
<div class="line"><a name="
|
|
2887
|
-
<div class="line"><a name="
|
|
2888
|
-
<div class="line"><a name="
|
|
2889
|
-
<div class="line"><a name="
|
|
2901
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01027">1027</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
2902
|
+
<div class="fragment"><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> {</div>
|
|
2903
|
+
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  <span class="keywordflow">if</span> (thisPtr1 == thisPtr2)</div>
|
|
2904
|
+
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
2905
|
+
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisU : thisPtr1->users())</div>
|
|
2906
|
+
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  {</div>
|
|
2907
|
+
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast<StoreInst>(thisU))</div>
|
|
2908
|
+
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  {</div>
|
|
2909
|
+
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* storeU : store->getPointerOperand()->users())</div>
|
|
2910
|
+
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  {</div>
|
|
2911
|
+
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = SVFUtil::dyn_cast<LoadInst>(storeU))</div>
|
|
2912
|
+
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  {</div>
|
|
2913
|
+
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="keywordflow">if</span> (load->getNextNode() &&</div>
|
|
2914
|
+
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  SVFUtil::isa<CastInst>(load->getNextNode()))</div>
|
|
2915
|
+
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <span class="keywordflow">return</span> SVFUtil::cast<CastInst>(load->getNextNode()) ==</div>
|
|
2916
|
+
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  (thisPtr2->stripPointerCasts());</div>
|
|
2917
|
+
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  }</div>
|
|
2918
|
+
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  }</div>
|
|
2919
|
+
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  }</div>
|
|
2920
|
+
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  }</div>
|
|
2921
|
+
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2922
|
+
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> }</div>
|
|
2890
2923
|
</div><!-- fragment -->
|
|
2891
2924
|
</div>
|
|
2892
2925
|
</div>
|
|
@@ -2914,15 +2947,15 @@ Functions</h2></td></tr>
|
|
|
2914
2947
|
</table>
|
|
2915
2948
|
</div><div class="memdoc">
|
|
2916
2949
|
|
|
2917
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2918
|
-
<div class="fragment"><div class="line"><a name="
|
|
2919
|
-
<div class="line"><a name="
|
|
2920
|
-
<div class="line"><a name="
|
|
2921
|
-
<div class="line"><a name="
|
|
2922
|
-
<div class="line"><a name="
|
|
2923
|
-
<div class="line"><a name="
|
|
2924
|
-
<div class="line"><a name="
|
|
2925
|
-
<div class="line"><a name="
|
|
2950
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00274">274</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2951
|
+
<div class="fragment"><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> {</div>
|
|
2952
|
+
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div>
|
|
2953
|
+
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div>
|
|
2954
|
+
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">if</span> (constExpr->getOpcode() == Instruction::Select)</div>
|
|
2955
|
+
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> constExpr;</div>
|
|
2956
|
+
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div>
|
|
2957
|
+
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
2958
|
+
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> }</div>
|
|
2926
2959
|
</div><!-- fragment -->
|
|
2927
2960
|
</div>
|
|
2928
2961
|
</div>
|
|
@@ -2950,19 +2983,19 @@ Functions</h2></td></tr>
|
|
|
2950
2983
|
</table>
|
|
2951
2984
|
</div><div class="memdoc">
|
|
2952
2985
|
|
|
2953
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2954
|
-
<div class="fragment"><div class="line"><a name="
|
|
2955
|
-
<div class="line"><a name="
|
|
2956
|
-
<div class="line"><a name="
|
|
2957
|
-
<div class="line"><a name="
|
|
2958
|
-
<div class="line"><a name="
|
|
2959
|
-
<div class="line"><a name="
|
|
2960
|
-
<div class="line"><a name="
|
|
2961
|
-
<div class="line"><a name="
|
|
2962
|
-
<div class="line"><a name="
|
|
2963
|
-
<div class="line"><a name="
|
|
2964
|
-
<div class="line"><a name="
|
|
2965
|
-
<div class="line"><a name="
|
|
2986
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00284">284</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
2987
|
+
<div class="fragment"><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> {</div>
|
|
2988
|
+
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div>
|
|
2989
|
+
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div>
|
|
2990
|
+
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">if</span> (constExpr->getOpcode() == Instruction::Trunc ||</div>
|
|
2991
|
+
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  constExpr->getOpcode() == Instruction::FPTrunc ||</div>
|
|
2992
|
+
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  constExpr->getOpcode() == Instruction::ZExt ||</div>
|
|
2993
|
+
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  constExpr->getOpcode() == Instruction::SExt ||</div>
|
|
2994
|
+
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  constExpr->getOpcode() == Instruction::FPExt)</div>
|
|
2995
|
+
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">return</span> constExpr;</div>
|
|
2996
|
+
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div>
|
|
2997
|
+
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
2998
|
+
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> }</div>
|
|
2966
2999
|
</div><!-- fragment -->
|
|
2967
3000
|
</div>
|
|
2968
3001
|
</div>
|
|
@@ -2990,16 +3023,16 @@ Functions</h2></td></tr>
|
|
|
2990
3023
|
</table>
|
|
2991
3024
|
</div><div class="memdoc">
|
|
2992
3025
|
|
|
2993
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
2994
|
-
<div class="fragment"><div class="line"><a name="
|
|
2995
|
-
<div class="line"><a name="
|
|
2996
|
-
<div class="line"><a name="
|
|
2997
|
-
<div class="line"><a name="
|
|
2998
|
-
<div class="line"><a name="
|
|
2999
|
-
<div class="line"><a name="
|
|
3000
|
-
<div class="line"><a name="
|
|
3001
|
-
<div class="line"><a name="
|
|
3002
|
-
<div class="line"><a name="
|
|
3026
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00320">320</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3027
|
+
<div class="fragment"><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> {</div>
|
|
3028
|
+
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast<ConstantExpr>(val))</div>
|
|
3029
|
+
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  {</div>
|
|
3030
|
+
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">if</span> ((constExpr->getOpcode() >= Instruction::UnaryOpsBegin) &&</div>
|
|
3031
|
+
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  (constExpr->getOpcode() <= Instruction::UnaryOpsEnd))</div>
|
|
3032
|
+
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">return</span> constExpr;</div>
|
|
3033
|
+
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div>
|
|
3034
|
+
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
3035
|
+
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> }</div>
|
|
3003
3036
|
</div><!-- fragment -->
|
|
3004
3037
|
</div>
|
|
3005
3038
|
</div>
|
|
@@ -3023,35 +3056,35 @@ Functions</h2></td></tr>
|
|
|
3023
3056
|
<p>Method for dead function, which does not have any possible caller function address is not taken and never be used in call or invoke instruction</p>
|
|
3024
3057
|
<p>Return true if this is a function without any possible caller </p>
|
|
3025
3058
|
|
|
3026
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
3027
|
-
<div class="fragment"><div class="line"><a name="
|
|
3028
|
-
<div class="line"><a name="
|
|
3029
|
-
<div class="line"><a name="
|
|
3030
|
-
<div class="line"><a name="
|
|
3031
|
-
<div class="line"><a name="
|
|
3032
|
-
<div class="line"><a name="
|
|
3033
|
-
<div class="line"><a name="
|
|
3034
|
-
<div class="line"><a name="
|
|
3035
|
-
<div class="line"><a name="
|
|
3036
|
-
<div class="line"><a name="
|
|
3037
|
-
<div class="line"><a name="
|
|
3038
|
-
<div class="line"><a name="
|
|
3039
|
-
<div class="line"><a name="
|
|
3040
|
-
<div class="line"><a name="
|
|
3041
|
-
<div class="line"><a name="
|
|
3042
|
-
<div class="line"><a name="
|
|
3043
|
-
<div class="line"><a name="
|
|
3044
|
-
<div class="line"><a name="
|
|
3045
|
-
<div class="line"><a name="
|
|
3046
|
-
<div class="line"><a name="
|
|
3047
|
-
<div class="line"><a name="
|
|
3048
|
-
<div class="line"><a name="
|
|
3049
|
-
<div class="line"><a name="
|
|
3050
|
-
<div class="line"><a name="
|
|
3051
|
-
<div class="line"><a name="
|
|
3052
|
-
<div class="line"><a name="
|
|
3053
|
-
<div class="line"><a name="
|
|
3054
|
-
<div class="line"><a name="
|
|
3059
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00154">154</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3060
|
+
<div class="fragment"><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> {</div>
|
|
3061
|
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span>(fun->hasAddressTaken())</div>
|
|
3062
|
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3063
|
+
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">LLVMUtil::isProgEntryFunction</a>(fun))</div>
|
|
3064
|
+
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3065
|
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">for</span> (Value::const_user_iterator i = fun->user_begin(), e = fun->user_end(); i != e; ++i)</div>
|
|
3066
|
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  {</div>
|
|
3067
|
+
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">LLVMUtil::isCallSite</a>(*i))</div>
|
|
3068
|
+
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3069
|
+
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div>
|
|
3070
|
+
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()->hasDeclaration(fun))</div>
|
|
3071
|
+
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  {</div>
|
|
3072
|
+
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a16d14e6712866d1d710c386c72d67181">LLVMModuleSet::FunctionSetType</a> &decls = LLVMModuleSet::getLLVMModuleSet()->getDeclaration(fun);</div>
|
|
3073
|
+
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">for</span> (LLVMModuleSet::FunctionSetType::const_iterator it = decls.begin(),</div>
|
|
3074
|
+
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  eit = decls.end(); it != eit; ++it)</div>
|
|
3075
|
+
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div>
|
|
3076
|
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* decl = *it;</div>
|
|
3077
|
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span>(decl->hasAddressTaken())</div>
|
|
3078
|
+
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3079
|
+
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">for</span> (Value::const_user_iterator i = decl->user_begin(), e = decl->user_end(); i != e; ++i)</div>
|
|
3080
|
+
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div>
|
|
3081
|
+
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">LLVMUtil::isCallSite</a>(*i))</div>
|
|
3082
|
+
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3083
|
+
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div>
|
|
3084
|
+
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div>
|
|
3085
|
+
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div>
|
|
3086
|
+
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
3087
|
+
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> }</div>
|
|
3055
3088
|
</div><!-- fragment -->
|
|
3056
3089
|
</div>
|
|
3057
3090
|
</div>
|
|
@@ -3071,20 +3104,20 @@ Functions</h2></td></tr>
|
|
|
3071
3104
|
</table>
|
|
3072
3105
|
</div><div class="memdoc">
|
|
3073
3106
|
|
|
3074
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
3075
|
-
<div class="fragment"><div class="line"><a name="
|
|
3076
|
-
<div class="line"><a name="
|
|
3077
|
-
<div class="line"><a name="
|
|
3078
|
-
<div class="line"><a name="
|
|
3079
|
-
<div class="line"><a name="
|
|
3080
|
-
<div class="line"><a name="
|
|
3081
|
-
<div class="line"><a name="
|
|
3082
|
-
<div class="line"><a name="
|
|
3083
|
-
<div class="line"><a name="
|
|
3084
|
-
<div class="line"><a name="
|
|
3085
|
-
<div class="line"><a name="
|
|
3086
|
-
<div class="line"><a name="
|
|
3087
|
-
<div class="line"><a name="
|
|
3107
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00578">578</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3108
|
+
<div class="fragment"><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> {</div>
|
|
3109
|
+
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="comment">// Check if it is an empty global annotations</span></div>
|
|
3110
|
+
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">if</span> (global.getName() == <span class="stringliteral">"llvm.global.annotations"</span> && SVFUtil::isa<ConstantArray>(global.getInitializer()))</div>
|
|
3111
|
+
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3112
|
+
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">else</span></div>
|
|
3113
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  {</div>
|
|
3114
|
+
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="comment">// Check if any global strings has at least one effective user</span></div>
|
|
3115
|
+
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& use : global.uses())</div>
|
|
3116
|
+
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">if</span> (use.getUser()->getNumUses() != 0)</div>
|
|
3117
|
+
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3118
|
+
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  }</div>
|
|
3119
|
+
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
3120
|
+
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span> }</div>
|
|
3088
3121
|
</div><!-- fragment -->
|
|
3089
3122
|
</div>
|
|
3090
3123
|
</div>
|
|
@@ -3104,14 +3137,14 @@ Functions</h2></td></tr>
|
|
|
3104
3137
|
</table>
|
|
3105
3138
|
</div><div class="memdoc">
|
|
3106
3139
|
|
|
3107
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
3108
|
-
<div class="fragment"><div class="line"><a name="
|
|
3109
|
-
<div class="line"><a name="
|
|
3110
|
-
<div class="line"><a name="
|
|
3111
|
-
<div class="line"><a name="
|
|
3112
|
-
<div class="line"><a name="
|
|
3113
|
-
<div class="line"><a name="
|
|
3114
|
-
<div class="line"><a name="
|
|
3140
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00902">902</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3141
|
+
<div class="fragment"><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> {</div>
|
|
3142
|
+
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keywordflow">if</span> (!SVFUtil::isa<GlobalVariable>(val))</div>
|
|
3143
|
+
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3144
|
+
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> valName = val->getName().str();</div>
|
|
3145
|
+
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="keywordflow">return</span> valName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>.size(),</div>
|
|
3146
|
+
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>) == 0;</div>
|
|
3147
|
+
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span> }</div>
|
|
3115
3148
|
</div><!-- fragment -->
|
|
3116
3149
|
</div>
|
|
3117
3150
|
</div>
|
|
@@ -3131,36 +3164,36 @@ Functions</h2></td></tr>
|
|
|
3131
3164
|
</table>
|
|
3132
3165
|
</div><div class="memdoc">
|
|
3133
3166
|
|
|
3134
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
3135
|
-
<div class="fragment"><div class="line"><a name="
|
|
3136
|
-
<div class="line"><a name="
|
|
3137
|
-
<div class="line"><a name="
|
|
3138
|
-
<div class="line"><a name="
|
|
3139
|
-
<div class="line"><a name="
|
|
3140
|
-
<div class="line"><a name="
|
|
3141
|
-
<div class="line"><a name="
|
|
3142
|
-
<div class="line"><a name="
|
|
3143
|
-
<div class="line"><a name="
|
|
3144
|
-
<div class="line"><a name="
|
|
3145
|
-
<div class="line"><a name="
|
|
3146
|
-
<div class="line"><a name="
|
|
3147
|
-
<div class="line"><a name="
|
|
3148
|
-
<div class="line"><a name="
|
|
3149
|
-
<div class="line"><a name="
|
|
3150
|
-
<div class="line"><a name="
|
|
3151
|
-
<div class="line"><a name="
|
|
3152
|
-
<div class="line"><a name="
|
|
3153
|
-
<div class="line"><a name="
|
|
3154
|
-
<div class="line"><a name="
|
|
3155
|
-
<div class="line"><a name="
|
|
3156
|
-
<div class="line"><a name="
|
|
3157
|
-
<div class="line"><a name="
|
|
3158
|
-
<div class="line"><a name="
|
|
3159
|
-
<div class="line"><a name="
|
|
3160
|
-
<div class="line"><a name="
|
|
3161
|
-
<div class="line"><a name="
|
|
3162
|
-
<div class="line"><a name="
|
|
3163
|
-
<div class="line"><a name="
|
|
3167
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00942">942</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3168
|
+
<div class="fragment"><div class="line"><a name="l00943"></a><span class="lineno"> 943</span> {</div>
|
|
3169
|
+
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <span class="comment">// the callsite must be an indirect one with at least one argument (this</span></div>
|
|
3170
|
+
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="comment">// ptr)</span></div>
|
|
3171
|
+
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <span class="keywordflow">if</span> (cs->getCalledFunction() != <span class="keyword">nullptr</span> || cs->arg_empty())</div>
|
|
3172
|
+
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3173
|
+
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  </div>
|
|
3174
|
+
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="comment">// the first argument (this pointer) must be a pointer type and must be a</span></div>
|
|
3175
|
+
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="comment">// class name</span></div>
|
|
3176
|
+
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="keywordflow">if</span> (cs->getArgOperand(0)->getType()->isPointerTy() == <span class="keyword">false</span>)</div>
|
|
3177
|
+
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3178
|
+
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  </div>
|
|
3179
|
+
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfunc = cs->getCalledOperand();</div>
|
|
3180
|
+
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst = SVFUtil::dyn_cast<LoadInst>(vfunc))</div>
|
|
3181
|
+
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  {</div>
|
|
3182
|
+
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst->getPointerOperand();</div>
|
|
3183
|
+
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
|
|
3184
|
+
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  SVFUtil::dyn_cast<GetElementPtrInst>(vfuncptr))</div>
|
|
3185
|
+
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  {</div>
|
|
3186
|
+
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keywordflow">if</span> (vfuncptrgepinst->getNumIndices() != 1)</div>
|
|
3187
|
+
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3188
|
+
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = vfuncptrgepinst->getPointerOperand();</div>
|
|
3189
|
+
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">if</span> (SVFUtil::isa<LoadInst>(vtbl))</div>
|
|
3190
|
+
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  {</div>
|
|
3191
|
+
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
3192
|
+
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  }</div>
|
|
3193
|
+
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  }</div>
|
|
3194
|
+
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  }</div>
|
|
3195
|
+
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3196
|
+
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span> }</div>
|
|
3164
3197
|
</div><!-- fragment -->
|
|
3165
3198
|
</div>
|
|
3166
3199
|
</div>
|
|
@@ -3182,12 +3215,12 @@ template<typename T > </div>
|
|
|
3182
3215
|
</table>
|
|
3183
3216
|
</div><div class="memdoc">
|
|
3184
3217
|
|
|
3185
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3186
|
-
<div class="fragment"><div class="line"><a name="
|
|
3187
|
-
<div class="line"><a name="
|
|
3188
|
-
<div class="line"><a name="
|
|
3189
|
-
<div class="line"><a name="
|
|
3190
|
-
<div class="line"><a name="
|
|
3218
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00517">517</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3219
|
+
<div class="fragment"><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> {</div>
|
|
3220
|
+
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
3221
|
+
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  llvm::raw_string_ostream(str) << val;</div>
|
|
3222
|
+
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">return</span> str;</div>
|
|
3223
|
+
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span> }</div>
|
|
3191
3224
|
</div><!-- fragment -->
|
|
3192
3225
|
</div>
|
|
3193
3226
|
</div>
|
|
@@ -3238,31 +3271,31 @@ template<typename T > </div>
|
|
|
3238
3271
|
<p>Parse argument for multi-module analysis. </p>
|
|
3239
3272
|
<p>Get the names of all modules into a vector And process arguments </p>
|
|
3240
3273
|
|
|
3241
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
3242
|
-
<div class="fragment"><div class="line"><a name="
|
|
3243
|
-
<div class="line"><a name="
|
|
3244
|
-
<div class="line"><a name="
|
|
3245
|
-
<div class="line"><a name="
|
|
3246
|
-
<div class="line"><a name="
|
|
3247
|
-
<div class="line"><a name="
|
|
3248
|
-
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  {</div>
|
|
3249
|
-
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div>
|
|
3250
|
-
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  == moduleNameVec.end())</div>
|
|
3251
|
-
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  moduleNameVec.push_back(argument);</div>
|
|
3252
|
-
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">if</span> (first_ir_file)</div>
|
|
3253
|
-
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  {</div>
|
|
3254
|
-
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  arg_value[arg_num] = argv[i];</div>
|
|
3255
|
-
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  arg_num++;</div>
|
|
3256
|
-
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  first_ir_file = <span class="keyword">false</span>;</div>
|
|
3257
|
-
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div>
|
|
3258
|
-
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  }</div>
|
|
3259
|
-
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">else</span></div>
|
|
3274
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00429">429</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3275
|
+
<div class="fragment"><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> {</div>
|
|
3276
|
+
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div>
|
|
3277
|
+
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < argc; ++i)</div>
|
|
3278
|
+
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  {</div>
|
|
3279
|
+
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> argument(argv[i]);</div>
|
|
3280
|
+
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(argument))</div>
|
|
3260
3281
|
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  {</div>
|
|
3261
|
-
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> 
|
|
3262
|
-
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span> 
|
|
3263
|
-
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span> 
|
|
3264
|
-
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span> 
|
|
3265
|
-
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span> 
|
|
3282
|
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div>
|
|
3283
|
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  == moduleNameVec.end())</div>
|
|
3284
|
+
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  moduleNameVec.push_back(argument);</div>
|
|
3285
|
+
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">if</span> (first_ir_file)</div>
|
|
3286
|
+
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  {</div>
|
|
3287
|
+
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  arg_value[arg_num] = argv[i];</div>
|
|
3288
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  arg_num++;</div>
|
|
3289
|
+
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  first_ir_file = <span class="keyword">false</span>;</div>
|
|
3290
|
+
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div>
|
|
3291
|
+
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div>
|
|
3292
|
+
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">else</span></div>
|
|
3293
|
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  {</div>
|
|
3294
|
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  arg_value[arg_num] = argv[i];</div>
|
|
3295
|
+
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  arg_num++;</div>
|
|
3296
|
+
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  }</div>
|
|
3297
|
+
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  }</div>
|
|
3298
|
+
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span> }</div>
|
|
3266
3299
|
</div><!-- fragment -->
|
|
3267
3300
|
</div>
|
|
3268
3301
|
</div>
|
|
@@ -3282,66 +3315,66 @@ template<typename T > </div>
|
|
|
3282
3315
|
</table>
|
|
3283
3316
|
</div><div class="memdoc">
|
|
3284
3317
|
|
|
3285
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
3286
|
-
<div class="fragment"><div class="line"><a name="
|
|
3287
|
-
<div class="line"><a name="
|
|
3288
|
-
<div class="line"><a name="
|
|
3289
|
-
<div class="line"><a name="
|
|
3290
|
-
<div class="line"><a name="
|
|
3291
|
-
<div class="line"><a name="
|
|
3292
|
-
<div class="line"><a name="
|
|
3293
|
-
<div class="line"><a name="
|
|
3294
|
-
<div class="line"><a name="
|
|
3295
|
-
<div class="line"><a name="
|
|
3296
|
-
<div class="line"><a name="
|
|
3297
|
-
<div class="line"><a name="
|
|
3298
|
-
<div class="line"><a name="
|
|
3299
|
-
<div class="line"><a name="
|
|
3300
|
-
<div class="line"><a name="
|
|
3301
|
-
<div class="line"><a name="
|
|
3302
|
-
<div class="line"><a name="
|
|
3303
|
-
<div class="line"><a name="
|
|
3304
|
-
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">continue</span>;</div>
|
|
3305
|
-
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  </div>
|
|
3306
|
-
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* expr = SVFUtil::dyn_cast<ConstantExpr>(structAn->getOperand(0));</div>
|
|
3307
|
-
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">if</span> (expr == <span class="keyword">nullptr</span> || expr->getOpcode() != Instruction::BitCast)</div>
|
|
3308
|
-
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  {</div>
|
|
3309
|
-
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="comment">// Keep the annotation if it's not created using BitCast</span></div>
|
|
3310
|
-
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  newAnnotations.push_back(structAn);</div>
|
|
3311
|
-
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">continue</span>;</div>
|
|
3312
|
-
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div>
|
|
3313
|
-
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  </div>
|
|
3314
|
-
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* annotatedFunc = SVFUtil::dyn_cast<Function>(expr->getOperand(0));</div>
|
|
3315
|
-
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">if</span> (annotatedFunc == <span class="keyword">nullptr</span> || std::find(removedFuncList.begin(), removedFuncList.end(), annotatedFunc) != removedFuncList.end())</div>
|
|
3318
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00497">497</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3319
|
+
<div class="fragment"><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> {</div>
|
|
3320
|
+
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordflow">if</span> (removedFuncList.empty())</div>
|
|
3321
|
+
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">return</span>; <span class="comment">// No functions to remove annotations in extapi.bc module</span></div>
|
|
3322
|
+
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  </div>
|
|
3323
|
+
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module = removedFuncList[0]->getParent();</div>
|
|
3324
|
+
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* glob = module->getGlobalVariable(<span class="stringliteral">"llvm.global.annotations"</span>);</div>
|
|
3325
|
+
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob->hasInitializer())</div>
|
|
3326
|
+
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">return</span>;</div>
|
|
3327
|
+
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  </div>
|
|
3328
|
+
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>* ca = SVFUtil::dyn_cast<ConstantArray>(glob->getInitializer());</div>
|
|
3329
|
+
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
|
|
3330
|
+
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">return</span>;</div>
|
|
3331
|
+
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  </div>
|
|
3332
|
+
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  std::vector<Constant*> newAnnotations;</div>
|
|
3333
|
+
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < ca->getNumOperands(); ++i)</div>
|
|
3334
|
+
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  {</div>
|
|
3335
|
+
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>* structAn = SVFUtil::dyn_cast<ConstantStruct>(ca->getOperand(i));</div>
|
|
3336
|
+
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
|
|
3316
3337
|
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">continue</span>;</div>
|
|
3317
3338
|
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  </div>
|
|
3318
|
-
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <
|
|
3319
|
-
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span> 
|
|
3320
|
-
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> 
|
|
3321
|
-
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  </div>
|
|
3322
|
-
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span> 
|
|
3323
|
-
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span> 
|
|
3324
|
-
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> 
|
|
3325
|
-
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span> 
|
|
3326
|
-
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span> 
|
|
3327
|
-
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  </div>
|
|
3328
|
-
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span> 
|
|
3329
|
-
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span> 
|
|
3330
|
-
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> 
|
|
3331
|
-
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span> 
|
|
3332
|
-
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> 
|
|
3339
|
+
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* expr = SVFUtil::dyn_cast<ConstantExpr>(structAn->getOperand(0));</div>
|
|
3340
|
+
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">if</span> (expr == <span class="keyword">nullptr</span> || expr->getOpcode() != Instruction::BitCast)</div>
|
|
3341
|
+
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  {</div>
|
|
3342
|
+
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="comment">// Keep the annotation if it's not created using BitCast</span></div>
|
|
3343
|
+
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  newAnnotations.push_back(structAn);</div>
|
|
3344
|
+
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">continue</span>;</div>
|
|
3345
|
+
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  }</div>
|
|
3346
|
+
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  </div>
|
|
3347
|
+
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* annotatedFunc = SVFUtil::dyn_cast<Function>(expr->getOperand(0));</div>
|
|
3348
|
+
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">if</span> (annotatedFunc == <span class="keyword">nullptr</span> || std::find(removedFuncList.begin(), removedFuncList.end(), annotatedFunc) != removedFuncList.end())</div>
|
|
3349
|
+
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">continue</span>;</div>
|
|
3350
|
+
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  </div>
|
|
3351
|
+
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="comment">// Keep the annotation for all other functions</span></div>
|
|
3352
|
+
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  newAnnotations.push_back(structAn);</div>
|
|
3353
|
+
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  }</div>
|
|
3333
3354
|
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  </div>
|
|
3334
|
-
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="
|
|
3335
|
-
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span> 
|
|
3336
|
-
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span> 
|
|
3337
|
-
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  </div>
|
|
3338
|
-
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <
|
|
3339
|
-
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span> 
|
|
3340
|
-
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span> 
|
|
3341
|
-
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  </div>
|
|
3342
|
-
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="
|
|
3343
|
-
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span> 
|
|
3344
|
-
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> 
|
|
3355
|
+
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">if</span> (newAnnotations.size() == ca->getNumOperands())</div>
|
|
3356
|
+
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordflow">return</span>; <span class="comment">// No annotations to remove</span></div>
|
|
3357
|
+
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  </div>
|
|
3358
|
+
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* annotationsType = ArrayType::get(ca->getType()->getElementType(), newAnnotations.size());</div>
|
|
3359
|
+
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* newCA = ConstantArray::get(annotationsType, newAnnotations);</div>
|
|
3360
|
+
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  </div>
|
|
3361
|
+
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="comment">// Check if a global variable with the name llvm.global.annotations already exists</span></div>
|
|
3362
|
+
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* existingGlobal = module->getGlobalVariable(<span class="stringliteral">"llvm.global.annotations"</span>);</div>
|
|
3363
|
+
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">if</span> (existingGlobal)</div>
|
|
3364
|
+
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="comment">// Rename the existing llvm.global.annotations to llvm.global.annotations_old</span></div>
|
|
3365
|
+
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  existingGlobal->setName(<span class="stringliteral">"llvm.global.annotations_old"</span>);</div>
|
|
3366
|
+
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  </div>
|
|
3367
|
+
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="comment">// Create a new global variable with the updated annotations</span></div>
|
|
3368
|
+
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* newGlobal = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>(*module, newCA->getType(), glob->isConstant(),</div>
|
|
3369
|
+
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  glob->getLinkage(), newCA, <span class="stringliteral">"llvm.global.annotations"</span>, glob, glob->getThreadLocalMode());</div>
|
|
3370
|
+
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  </div>
|
|
3371
|
+
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="comment">// Copy other properties from the old global variable to the new one</span></div>
|
|
3372
|
+
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  newGlobal->setSection(glob->getSection());</div>
|
|
3373
|
+
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  newGlobal->setAlignment(llvm::MaybeAlign(glob->getAlignment()));</div>
|
|
3374
|
+
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  </div>
|
|
3375
|
+
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="comment">// Remove the old global variable</span></div>
|
|
3376
|
+
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  glob->eraseFromParent();</div>
|
|
3377
|
+
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> }</div>
|
|
3345
3378
|
</div><!-- fragment -->
|
|
3346
3379
|
</div>
|
|
3347
3380
|
</div>
|
|
@@ -3366,45 +3399,45 @@ template<typename T > </div>
|
|
|
3366
3399
|
<p>Delete unused functions The functions to be deleted from extapi.bc can be categorized into two types. The first type includes functions do not contain any invocation statements, The second type includes functions whose contain invocation statements. It is necessary to delete functions of the second type first before deleting those of the first type; Otherwise, errors may occur when calling eraseFromParent().</p>
|
|
3367
3400
|
<p>Check whether a function is called by other functions</p>
|
|
3368
3401
|
|
|
3369
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
3370
|
-
<div class="fragment"><div class="line"><a name="
|
|
3371
|
-
<div class="line"><a name="
|
|
3372
|
-
<div class="line"><a name="
|
|
3373
|
-
<div class="line"><a name="
|
|
3374
|
-
<div class="line"><a name="
|
|
3375
|
-
<div class="line"><a name="
|
|
3376
|
-
<div class="line"><a name="
|
|
3377
|
-
<div class="line"><a name="
|
|
3378
|
-
<div class="line"><a name="
|
|
3379
|
-
<div class="line"><a name="
|
|
3380
|
-
<div class="line"><a name="
|
|
3381
|
-
<div class="line"><a name="
|
|
3382
|
-
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  {</div>
|
|
3383
|
-
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> && <span class="stringliteral">"Null function pointer!"</span>);</div>
|
|
3384
|
-
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& use : <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->uses())</div>
|
|
3385
|
-
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  {</div>
|
|
3386
|
-
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">llvm::User</a>* user = use.getUser();</div>
|
|
3387
|
-
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">if</span> (llvm::isa<llvm::CallBase>(user))</div>
|
|
3388
|
-
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
3389
|
-
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  }</div>
|
|
3390
|
-
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3391
|
-
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  };</div>
|
|
3392
|
-
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  </div>
|
|
3393
|
-
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : removedFuncList)</div>
|
|
3402
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00608">608</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3403
|
+
<div class="fragment"><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> {</div>
|
|
3404
|
+
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keywordflow">if</span> (removedFuncList.empty())</div>
|
|
3405
|
+
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">return</span>;</div>
|
|
3406
|
+
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  </div>
|
|
3407
|
+
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = removedFuncList[0]->getParent();</div>
|
|
3408
|
+
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keywordflow">if</span> (mod->getName().str() != ExtAPI::getExtAPI()->getExtBcPath())</div>
|
|
3409
|
+
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="keywordflow">return</span>;</div>
|
|
3410
|
+
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  </div>
|
|
3411
|
+
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a523a8c3f9bfaea178733822ac598d552">LLVMUtil::removeFunAnnotations</a>(removedFuncList);</div>
|
|
3412
|
+
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  </div>
|
|
3413
|
+
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  std::vector<Function*> funcsToKeep;</div>
|
|
3414
|
+
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keyword">auto</span> isCalledFunction = [](<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">llvm::Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
3394
3415
|
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  {</div>
|
|
3395
|
-
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <
|
|
3396
|
-
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span> 
|
|
3397
|
-
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span> 
|
|
3398
|
-
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span> 
|
|
3399
|
-
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="
|
|
3400
|
-
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span> 
|
|
3401
|
-
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span> 
|
|
3402
|
-
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span> 
|
|
3403
|
-
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span> 
|
|
3404
|
-
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span> 
|
|
3405
|
-
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="
|
|
3406
|
-
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span> 
|
|
3407
|
-
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span> 
|
|
3416
|
+
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> && <span class="stringliteral">"Null function pointer!"</span>);</div>
|
|
3417
|
+
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& use : <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->uses())</div>
|
|
3418
|
+
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  {</div>
|
|
3419
|
+
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">llvm::User</a>* user = use.getUser();</div>
|
|
3420
|
+
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keywordflow">if</span> (llvm::isa<llvm::CallBase>(user))</div>
|
|
3421
|
+
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
3422
|
+
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  }</div>
|
|
3423
|
+
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3424
|
+
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  };</div>
|
|
3425
|
+
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  </div>
|
|
3426
|
+
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : removedFuncList)</div>
|
|
3427
|
+
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  {</div>
|
|
3428
|
+
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">if</span> (isCalledFunction(func))</div>
|
|
3429
|
+
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="comment">// Record first kind function(which does not contain any invocation statements)</span></div>
|
|
3430
|
+
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  funcsToKeep.push_back(func);</div>
|
|
3431
|
+
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">else</span></div>
|
|
3432
|
+
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="comment">// Delete second kind function(which contains invocation statements)</span></div>
|
|
3433
|
+
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  func->eraseFromParent();</div>
|
|
3434
|
+
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  }</div>
|
|
3435
|
+
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="comment">// Delete first kind functions</span></div>
|
|
3436
|
+
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : funcsToKeep)</div>
|
|
3437
|
+
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  func->eraseFromParent();</div>
|
|
3438
|
+
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="comment">// Delete unused global variables</span></div>
|
|
3439
|
+
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">removeUnusedGlobalVariables</a>(mod);</div>
|
|
3440
|
+
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> }</div>
|
|
3408
3441
|
</div><!-- fragment -->
|
|
3409
3442
|
</div>
|
|
3410
3443
|
</div>
|
|
@@ -3424,19 +3457,19 @@ template<typename T > </div>
|
|
|
3424
3457
|
</table>
|
|
3425
3458
|
</div><div class="memdoc">
|
|
3426
3459
|
|
|
3427
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
3428
|
-
<div class="fragment"><div class="line"><a name="
|
|
3429
|
-
<div class="line"><a name="
|
|
3430
|
-
<div class="line"><a name="
|
|
3431
|
-
<div class="line"><a name="
|
|
3432
|
-
<div class="line"><a name="
|
|
3433
|
-
<div class="line"><a name="
|
|
3434
|
-
<div class="line"><a name="
|
|
3435
|
-
<div class="line"><a name="
|
|
3436
|
-
<div class="line"><a name="
|
|
3437
|
-
<div class="line"><a name="
|
|
3438
|
-
<div class="line"><a name="
|
|
3439
|
-
<div class="line"><a name="
|
|
3460
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00593">593</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3461
|
+
<div class="fragment"><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> {</div>
|
|
3462
|
+
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  assert(module && <span class="stringliteral">"Null module pointer!"</span>);</div>
|
|
3463
|
+
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  std::vector<GlobalVariable*> unusedGlobals;</div>
|
|
3464
|
+
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>& global : module->globals())</div>
|
|
3465
|
+
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">isUnusedGlobalVariable</a>(global))</div>
|
|
3466
|
+
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="comment">// Record unused global variables</span></div>
|
|
3467
|
+
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  unusedGlobals.push_back(&global);</div>
|
|
3468
|
+
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  </div>
|
|
3469
|
+
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="comment">// Delete unused global variables</span></div>
|
|
3470
|
+
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* global : unusedGlobals)</div>
|
|
3471
|
+
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  global->eraseFromParent();</div>
|
|
3472
|
+
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span> }</div>
|
|
3440
3473
|
</div><!-- fragment -->
|
|
3441
3474
|
</div>
|
|
3442
3475
|
</div>
|
|
@@ -3459,28 +3492,28 @@ template<typename T > </div>
|
|
|
3459
3492
|
<p>Strip off the all casts. </p>
|
|
3460
3493
|
<p>Strip all casts </p>
|
|
3461
3494
|
|
|
3462
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
3463
|
-
<div class="fragment"><div class="line"><a name="
|
|
3464
|
-
<div class="line"><a name="
|
|
3465
|
-
<div class="line"><a name="
|
|
3466
|
-
<div class="line"><a name="
|
|
3467
|
-
<div class="line"><a name="
|
|
3468
|
-
<div class="line"><a name="
|
|
3469
|
-
<div class="line"><a name="
|
|
3470
|
-
<div class="line"><a name="
|
|
3471
|
-
<div class="line"><a name="
|
|
3472
|
-
<div class="line"><a name="
|
|
3473
|
-
<div class="line"><a name="
|
|
3474
|
-
<div class="line"><a name="
|
|
3475
|
-
<div class="line"><a name="
|
|
3476
|
-
<div class="line"><a name="
|
|
3477
|
-
<div class="line"><a name="
|
|
3478
|
-
<div class="line"><a name="
|
|
3479
|
-
<div class="line"><a name="
|
|
3480
|
-
<div class="line"><a name="
|
|
3481
|
-
<div class="line"><a name="
|
|
3482
|
-
<div class="line"><a name="
|
|
3483
|
-
<div class="line"><a name="
|
|
3495
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00263">263</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3496
|
+
<div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> {</div>
|
|
3497
|
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div>
|
|
3498
|
+
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  {</div>
|
|
3499
|
+
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">CastInst</a> *ci = SVFUtil::dyn_cast<CastInst>(val))</div>
|
|
3500
|
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div>
|
|
3501
|
+
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  val = ci->getOperand(0);</div>
|
|
3502
|
+
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div>
|
|
3503
|
+
<div class="line"><a name="l00271"></a><span class="lineno"> 271</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> *ce = SVFUtil::dyn_cast<ConstantExpr>(val))</div>
|
|
3504
|
+
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  {</div>
|
|
3505
|
+
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span>(ce->isCast())</div>
|
|
3506
|
+
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  val = ce->getOperand(0);</div>
|
|
3507
|
+
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">else</span></div>
|
|
3508
|
+
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">return</span> val;</div>
|
|
3509
|
+
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div>
|
|
3510
|
+
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">else</span></div>
|
|
3511
|
+
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  {</div>
|
|
3512
|
+
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">return</span> val;</div>
|
|
3513
|
+
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div>
|
|
3514
|
+
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div>
|
|
3515
|
+
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
3516
|
+
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> }</div>
|
|
3484
3517
|
</div><!-- fragment -->
|
|
3485
3518
|
</div>
|
|
3486
3519
|
</div>
|
|
@@ -3503,17 +3536,17 @@ template<typename T > </div>
|
|
|
3503
3536
|
<p>Strip off the constant casts. </p>
|
|
3504
3537
|
<p>Strip constant casts </p>
|
|
3505
3538
|
|
|
3506
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
3507
|
-
<div class="fragment"><div class="line"><a name="
|
|
3508
|
-
<div class="line"><a name="
|
|
3509
|
-
<div class="line"><a name="
|
|
3510
|
-
<div class="line"><a name="
|
|
3511
|
-
<div class="line"><a name="
|
|
3512
|
-
<div class="line"><a name="
|
|
3513
|
-
<div class="line"><a name="
|
|
3514
|
-
<div class="line"><a name="
|
|
3515
|
-
<div class="line"><a name="
|
|
3516
|
-
<div class="line"><a name="
|
|
3539
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00232">232</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3540
|
+
<div class="fragment"><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> {</div>
|
|
3541
|
+
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalValue>(val) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">isInt2PtrConstantExpr</a>(val))</div>
|
|
3542
|
+
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> val;</div>
|
|
3543
|
+
<div class="line"><a name="l00236"></a><span class="lineno"> 236</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> *CE = SVFUtil::dyn_cast<ConstantExpr>(val))</div>
|
|
3544
|
+
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div>
|
|
3545
|
+
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span> (Instruction::isCast(CE->getOpcode()))</div>
|
|
3546
|
+
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">stripConstantCasts</a>(CE->getOperand(0));</div>
|
|
3547
|
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div>
|
|
3548
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> val;</div>
|
|
3549
|
+
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> }</div>
|
|
3517
3550
|
</div><!-- fragment -->
|
|
3518
3551
|
</div>
|
|
3519
3552
|
</div>
|
|
@@ -3541,25 +3574,25 @@ template<typename T > </div>
|
|
|
3541
3574
|
</table>
|
|
3542
3575
|
</div><div class="memdoc">
|
|
3543
3576
|
|
|
3544
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#
|
|
3545
|
-
<div class="fragment"><div class="line"><a name="
|
|
3546
|
-
<div class="line"><a name="
|
|
3547
|
-
<div class="line"><a name="
|
|
3548
|
-
<div class="line"><a name="
|
|
3549
|
-
<div class="line"><a name="
|
|
3550
|
-
<div class="line"><a name="
|
|
3551
|
-
<div class="line"><a name="
|
|
3552
|
-
<div class="line"><a name="
|
|
3553
|
-
<div class="line"><a name="
|
|
3554
|
-
<div class="line"><a name="
|
|
3555
|
-
<div class="line"><a name="
|
|
3556
|
-
<div class="line"><a name="
|
|
3557
|
-
<div class="line"><a name="
|
|
3558
|
-
<div class="line"><a name="
|
|
3559
|
-
<div class="line"><a name="
|
|
3560
|
-
<div class="line"><a name="
|
|
3561
|
-
<div class="line"><a name="
|
|
3562
|
-
<div class="line"><a name="
|
|
3577
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00387">387</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
|
|
3578
|
+
<div class="fragment"><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> {</div>
|
|
3579
|
+
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">llvm::Type</a>* llvm_rhs = LLVMModuleSet::getLLVMModuleSet()->getLLVMType(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>);</div>
|
|
3580
|
+
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">llvm::PointerType</a>* llvm_rhs_ptr = SVFUtil::dyn_cast<PointerType>(llvm_rhs);</div>
|
|
3581
|
+
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  assert(llvm_rhs_ptr && <span class="stringliteral">"not a pointer type?"</span>);</div>
|
|
3582
|
+
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *ptrElementType = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(llvm_rhs_ptr);</div>
|
|
3583
|
+
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> llvm_rhs_size = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6">LLVMUtil::getTypeSizeInBytes</a>(ptrElementType);</div>
|
|
3584
|
+
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> llvm_elem_size = -1;</div>
|
|
3585
|
+
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">if</span> (ptrElementType->isArrayTy() && llvm_rhs_size > 0)</div>
|
|
3586
|
+
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  {</div>
|
|
3587
|
+
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordtype">size_t</span> array_len = ptrElementType->getArrayNumElements();</div>
|
|
3588
|
+
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  llvm_elem_size = llvm_rhs_size / array_len;</div>
|
|
3589
|
+
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  }</div>
|
|
3590
|
+
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">else</span></div>
|
|
3591
|
+
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  {</div>
|
|
3592
|
+
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  llvm_elem_size =llvm_rhs_size;</div>
|
|
3593
|
+
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  }</div>
|
|
3594
|
+
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">return</span> llvm_elem_size;</div>
|
|
3595
|
+
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span> }</div>
|
|
3563
3596
|
</div><!-- fragment -->
|
|
3564
3597
|
</div>
|
|
3565
3598
|
</div>
|
|
@@ -3579,18 +3612,18 @@ template<typename T > </div>
|
|
|
3579
3612
|
</table>
|
|
3580
3613
|
</div><div class="memdoc">
|
|
3581
3614
|
|
|
3582
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
3583
|
-
<div class="fragment"><div class="line"><a name="
|
|
3584
|
-
<div class="line"><a name="
|
|
3585
|
-
<div class="line"><a name="
|
|
3586
|
-
<div class="line"><a name="
|
|
3587
|
-
<div class="line"><a name="
|
|
3588
|
-
<div class="line"><a name="
|
|
3589
|
-
<div class="line"><a name="
|
|
3590
|
-
<div class="line"><a name="
|
|
3591
|
-
<div class="line"><a name="
|
|
3592
|
-
<div class="line"><a name="
|
|
3593
|
-
<div class="line"><a name="
|
|
3615
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01146">1146</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3616
|
+
<div class="fragment"><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> {</div>
|
|
3617
|
+
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> classNameOfThisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">LLVMUtil::getClassNameOfThisPtr</a>(cs);</div>
|
|
3618
|
+
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = cs->getCaller();</div>
|
|
3619
|
+
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(func) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(func))</div>
|
|
3620
|
+
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  {</div>
|
|
3621
|
+
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(func->getName().str());</div>
|
|
3622
|
+
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  <span class="keywordflow">if</span> (classNameOfThisPtr.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>) == 0)</div>
|
|
3623
|
+
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
3624
|
+
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  }</div>
|
|
3625
|
+
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
3626
|
+
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span> }</div>
|
|
3594
3627
|
</div><!-- fragment -->
|
|
3595
3628
|
</div>
|
|
3596
3629
|
</div>
|
|
@@ -3610,13 +3643,13 @@ template<typename T > </div>
|
|
|
3610
3643
|
</table>
|
|
3611
3644
|
</div><div class="memdoc">
|
|
3612
3645
|
|
|
3613
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
3614
|
-
<div class="fragment"><div class="line"><a name="
|
|
3615
|
-
<div class="line"><a name="
|
|
3616
|
-
<div class="line"><a name="
|
|
3617
|
-
<div class="line"><a name="
|
|
3618
|
-
<div class="line"><a name="
|
|
3619
|
-
<div class="line"><a name="
|
|
3646
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00244">244</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3647
|
+
<div class="fragment"><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> {</div>
|
|
3648
|
+
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
|
|
3649
|
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  {</div>
|
|
3650
|
+
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  fun->viewCFG();</div>
|
|
3651
|
+
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div>
|
|
3652
|
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> }</div>
|
|
3620
3653
|
</div><!-- fragment -->
|
|
3621
3654
|
</div>
|
|
3622
3655
|
</div>
|
|
@@ -3636,29 +3669,29 @@ template<typename T > </div>
|
|
|
3636
3669
|
</table>
|
|
3637
3670
|
</div><div class="memdoc">
|
|
3638
3671
|
|
|
3639
|
-
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#
|
|
3640
|
-
<div class="fragment"><div class="line"><a name="
|
|
3641
|
-
<div class="line"><a name="
|
|
3642
|
-
<div class="line"><a name="
|
|
3643
|
-
<div class="line"><a name="
|
|
3644
|
-
<div class="line"><a name="
|
|
3645
|
-
<div class="line"><a name="
|
|
3672
|
+
<p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00252">252</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
|
|
3673
|
+
<div class="fragment"><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> {</div>
|
|
3674
|
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
|
|
3675
|
+
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div>
|
|
3676
|
+
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  fun->viewCFGOnly();</div>
|
|
3677
|
+
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div>
|
|
3678
|
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> }</div>
|
|
3646
3679
|
</div><!-- fragment -->
|
|
3647
3680
|
</div>
|
|
3648
3681
|
</div>
|
|
3649
3682
|
</div><!-- contents -->
|
|
3650
3683
|
<div class="ttc" id="anamespaceSVF_html_a827d09974dc7bf0849f96823cc2fee89"><div class="ttname"><a href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">SVF::DomTreeNode</a></div><div class="ttdeci">llvm::DomTreeNode DomTreeNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
|
|
3651
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3684
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00679">LLVMUtil.cpp:679</a></div></div>
|
|
3652
3685
|
<div class="ttc" id="anamespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdoc">LLVM Dominators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00131">BasicTypes.h:131</a></div></div>
|
|
3653
3686
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aeaa116fd9718c8b31f30d3fe62bb6403"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aeaa116fd9718c8b31f30d3fe62bb6403">SVF::LLVMUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Value *val)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00051">LLVMUtil.h:51</a></div></div>
|
|
3654
3687
|
<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>
|
|
3655
3688
|
<div class="ttc" id="anamespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00146">BasicTypes.h:146</a></div></div>
|
|
3656
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b5fdf455c5dd40c0baa60185e5e41c6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6">SVF::LLVMUtil::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const StructType *sty, u32_t field_index)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3689
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b5fdf455c5dd40c0baa60185e5e41c6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6">SVF::LLVMUtil::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const StructType *sty, u32_t field_index)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00665">LLVMUtil.cpp:665</a></div></div>
|
|
3657
3690
|
<div class="ttc" id="anamespaceSVF_html_a773900ea3c75022657aac1abf59fa51b"><div class="ttname"><a href="namespaceSVF.html#a773900ea3c75022657aac1abf59fa51b">SVF::MetadataAsValue</a></div><div class="ttdeci">llvm::MetadataAsValue MetadataAsValue</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
|
|
3658
3691
|
<div class="ttc" id="anamespaceSVF_html_a6ec0236303089a01fd9da36a8bb84e0a"><div class="ttname"><a href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">SVF::FunctionType</a></div><div class="ttdeci">llvm::FunctionType FunctionType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
|
|
3659
3692
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a16d14e6712866d1d710c386c72d67181"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a16d14e6712866d1d710c386c72d67181">SVF::LLVMModuleSet::FunctionSetType</a></div><div class="ttdeci">std::vector< const Function * > FunctionSetType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00050">LLVMModule.h:50</a></div></div>
|
|
3660
3693
|
<div class="ttc" id="aLLVMUtil_8cpp_html_a5f8da60b0fcc28445f508f4e42513a82"><div class="ttname"><a href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a></div><div class="ttdeci">const std::string clsName</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00043">LLVMUtil.cpp:43</a></div></div>
|
|
3661
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a08fbef6fe3e2af96a49f79ce23accb01"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">SVF::LLVMUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3694
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a08fbef6fe3e2af96a49f79ce23accb01"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">SVF::LLVMUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00902">LLVMUtil.cpp:902</a></div></div>
|
|
3662
3695
|
<div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00097">SVFType.h:97</a></div></div>
|
|
3663
3696
|
<div class="ttc" id="anamespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00084">BasicTypes.h:84</a></div></div>
|
|
3664
3697
|
<div class="ttc" id="anamespaceSVF_html_a3d9e7f32dc17fe8d40f8d6a011403b91"><div class="ttname"><a href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">SVF::IntegerType</a></div><div class="ttdeci">llvm::IntegerType IntegerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
|
|
@@ -3666,16 +3699,16 @@ template<typename T > </div>
|
|
|
3666
3699
|
<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>
|
|
3667
3700
|
<div class="ttc" id="anamespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
|
|
3668
3701
|
<div class="ttc" id="anamespaceSVF_html_a03db82b8a7914367024723dba4d6ca3c"><div class="ttname"><a href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">SVF::DataLayout</a></div><div class="ttdeci">llvm::DataLayout DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00106">BasicTypes.h:106</a></div></div>
|
|
3669
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07bd47ccfd02c5a2a6db26b537b2184f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">SVF::LLVMUtil::stripConstantCasts</a></div><div class="ttdeci">const Value * stripConstantCasts(const Value *val)</div><div class="ttdoc">Strip off the constant casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3670
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2c61d741afbcfa853b505cd391f29f9b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">SVF::LLVMUtil::isUncalledFunction</a></div><div class="ttdeci">bool isUncalledFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller?</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3671
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3702
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07bd47ccfd02c5a2a6db26b537b2184f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">SVF::LLVMUtil::stripConstantCasts</a></div><div class="ttdeci">const Value * stripConstantCasts(const Value *val)</div><div class="ttdoc">Strip off the constant casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00232">LLVMUtil.cpp:232</a></div></div>
|
|
3703
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2c61d741afbcfa853b505cd391f29f9b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">SVF::LLVMUtil::isUncalledFunction</a></div><div class="ttdeci">bool isUncalledFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller?</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00154">LLVMUtil.cpp:154</a></div></div>
|
|
3704
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00853">LLVMUtil.cpp:853</a></div></div>
|
|
3672
3705
|
<div class="ttc" id="anamespaceSVF_html_a52c8654c221bb53a59f70ea3cb1e5c45"><div class="ttname"><a href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">SVF::StructLayout</a></div><div class="ttdeci">llvm::StructLayout StructLayout</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00103">BasicTypes.h:103</a></div></div>
|
|
3673
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae2b444bb3e7a27d77386f588a78af8e2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">SVF::LLVMUtil::removeUnusedGlobalVariables</a></div><div class="ttdeci">void removeUnusedGlobalVariables(Module *module)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3706
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae2b444bb3e7a27d77386f588a78af8e2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">SVF::LLVMUtil::removeUnusedGlobalVariables</a></div><div class="ttdeci">void removeUnusedGlobalVariables(Module *module)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00593">LLVMUtil.cpp:593</a></div></div>
|
|
3674
3707
|
<div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
|
|
3675
3708
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00442">SVFUtil.h:442</a></div></div>
|
|
3676
3709
|
<div class="ttc" id="anamespaceSVF_html_a7cbe1c6567039e72958fd70e423d3597"><div class="ttname"><a href="namespaceSVF.html#a7cbe1c6567039e72958fd70e423d3597">SVF::ConstantAggregate</a></div><div class="ttdeci">llvm::ConstantAggregate ConstantAggregate</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00115">BasicTypes.h:115</a></div></div>
|
|
3677
3710
|
<div class="ttc" id="acJSON_8h_html_a25d22ecc7e656d2c59332072684e8766"><div class="ttname"><a href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a></div><div class="ttdeci">const char *const name</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00264">cJSON.h:264</a></div></div>
|
|
3678
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a47d2af43ff12d9e1014fa19256619466"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">SVF::LLVMUtil::getCalledFunctions</a></div><div class="ttdeci">std::vector< const Function * > getCalledFunctions(const Function *F)</div><div class="ttdoc">Get all called funcions in a parent function.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3711
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a47d2af43ff12d9e1014fa19256619466"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">SVF::LLVMUtil::getCalledFunctions</a></div><div class="ttdeci">std::vector< const Function * > getCalledFunctions(const Function *F)</div><div class="ttdoc">Get all called funcions in a parent function.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00559">LLVMUtil.cpp:559</a></div></div>
|
|
3679
3712
|
<div class="ttc" id="anamespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00251">BasicTypes.h:251</a></div></div>
|
|
3680
3713
|
<div class="ttc" id="anamespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
|
|
3681
3714
|
<div class="ttc" id="anamespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
|
|
@@ -3684,10 +3717,10 @@ template<typename T > </div>
|
|
|
3684
3717
|
<div class="ttc" id="anamespaceSVF_html_a5a6e8ab900d5cd17ef72661006a7fbe0"><div class="ttname"><a href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">SVF::LoadInst</a></div><div class="ttdeci">llvm::LoadInst LoadInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00147">BasicTypes.h:147</a></div></div>
|
|
3685
3718
|
<div class="ttc" id="anamespaceSVF_html_a956458a8554bf734db1194f320fd4b4c"><div class="ttname"><a href="namespaceSVF.html#a956458a8554bf734db1194f320fd4b4c">SVF::BlockAddress</a></div><div class="ttdeci">llvm::BlockAddress BlockAddress</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
|
|
3686
3719
|
<div class="ttc" id="anamespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
|
|
3687
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a837d19c740902c419206287bdb21273b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">SVF::LLVMUtil::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3688
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a68e7bad8eb537039559d8ddc851032e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">SVF::LLVMUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3720
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a837d19c740902c419206287bdb21273b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">SVF::LLVMUtil::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00349">LLVMUtil.cpp:349</a></div></div>
|
|
3721
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a68e7bad8eb537039559d8ddc851032e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">SVF::LLVMUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01001">LLVMUtil.cpp:1001</a></div></div>
|
|
3689
3722
|
<div class="ttc" id="anamespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
|
|
3690
|
-
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
3723
|
+
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00527">SVFValue.h:527</a></div></div>
|
|
3691
3724
|
<div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
3692
3725
|
<div class="ttc" id="anamespaceSVF_html_a334998718813a19a7697daf4ba282faf"><div class="ttname"><a href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">SVF::Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
3693
3726
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ac9d6aff1a5e778e45c51b4f3b6d787e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">SVF::LLVMUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const Function *fun)</div><div class="ttdoc">Check whether a function is an entry function (i.e., main)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00102">LLVMUtil.h:102</a></div></div>
|
|
@@ -3698,19 +3731,19 @@ template<typename T > </div>
|
|
|
3698
3731
|
<div class="ttc" id="anamespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00085">BasicTypes.h:85</a></div></div>
|
|
3699
3732
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a745a2addadc136075d45c7fb8437af3e"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">SVF::cppUtil::demangle</a></div><div class="ttdeci">struct DemangledName demangle(const std::string &name)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00153">CppUtil.cpp:153</a></div></div>
|
|
3700
3733
|
<div class="ttc" id="acJSON_8cpp_html_a930920b2bc42824a5c03be681830f4b2"><div class="ttname"><a href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a></div><div class="ttdeci">return true</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02295">cJSON.cpp:2295</a></div></div>
|
|
3701
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8a77403306e97ab4cb31a56d38bba5be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">SVF::LLVMUtil::isConstDataOrAggData</a></div><div class="ttdeci">bool isConstDataOrAggData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
3734
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8a77403306e97ab4cb31a56d38bba5be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">SVF::LLVMUtil::isConstDataOrAggData</a></div><div class="ttdeci">bool isConstDataOrAggData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00414">LLVMUtil.h:414</a></div></div>
|
|
3702
3735
|
<div class="ttc" id="anamespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00092">BasicTypes.h:92</a></div></div>
|
|
3703
3736
|
<div class="ttc" id="anamespaceSVF_html_a2b28f48dde0a9a91d251e654ce1f9477"><div class="ttname"><a href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">SVF::ConstantStruct</a></div><div class="ttdeci">llvm::ConstantStruct ConstantStruct</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00104">BasicTypes.h:104</a></div></div>
|
|
3704
3737
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00297">SVFValue.h:297</a></div></div>
|
|
3705
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3738
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00412">LLVMUtil.cpp:412</a></div></div>
|
|
3706
3739
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a1cf2e4671b16b477cc779c72f2419234"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">SVF::cppUtil::getBeforeBrackets</a></div><div class="ttdeci">std::string getBeforeBrackets(const std::string &name)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00085">CppUtil.cpp:85</a></div></div>
|
|
3707
3740
|
<div class="ttc" id="aLLVMUtil_8cpp_html_a211c0223a37893d84fb5e2fd2f9fc76b"><div class="ttname"><a href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a></div><div class="ttdeci">const std::string vtblLabelBeforeDemangle</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00038">LLVMUtil.cpp:38</a></div></div>
|
|
3708
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a523a8c3f9bfaea178733822ac598d552"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a523a8c3f9bfaea178733822ac598d552">SVF::LLVMUtil::removeFunAnnotations</a></div><div class="ttdeci">void removeFunAnnotations(std::vector< Function * > &removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3741
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a523a8c3f9bfaea178733822ac598d552"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a523a8c3f9bfaea178733822ac598d552">SVF::LLVMUtil::removeFunAnnotations</a></div><div class="ttdeci">void removeFunAnnotations(std::vector< Function * > &removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00497">LLVMUtil.cpp:497</a></div></div>
|
|
3709
3742
|
<div class="ttc" id="anamespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00110">BasicTypes.h:110</a></div></div>
|
|
3710
|
-
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_af264312f0020bde9151697bccfde3263"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#af264312f0020bde9151697bccfde3263">SVF::SVFFunction::getReturnType</a></div><div class="ttdeci">const SVFType * getReturnType() const</div><div class="ttdoc">Returns the FunctionType.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
3711
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a206973624fcc58e6044c884dba23a754"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">SVF::LLVMUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3712
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
3713
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adfa4a4e6d13004d14137d9168bd32463"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">SVF::LLVMUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
3743
|
+
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_af264312f0020bde9151697bccfde3263"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#af264312f0020bde9151697bccfde3263">SVF::SVFFunction::getReturnType</a></div><div class="ttdeci">const SVFType * getReturnType() const</div><div class="ttdoc">Returns the FunctionType.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00389">SVFValue.h:389</a></div></div>
|
|
3744
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a206973624fcc58e6044c884dba23a754"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">SVF::LLVMUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01091">LLVMUtil.cpp:1091</a></div></div>
|
|
3745
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00332">LLVMUtil.h:332</a></div></div>
|
|
3746
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adfa4a4e6d13004d14137d9168bd32463"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">SVF::LLVMUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00244">LLVMUtil.h:244</a></div></div>
|
|
3714
3747
|
<div class="ttc" id="aLLVMUtil_8cpp_html_a61c158146c07e77234eb4a2f9b940821"><div class="ttname"><a href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a></div><div class="ttdeci">const std::string structName</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00044">LLVMUtil.cpp:44</a></div></div>
|
|
3715
3748
|
<div class="ttc" id="anamespaceSVF_html_a962e9a9044a46fc4bd2367384f6e0827"><div class="ttname"><a href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">SVF::CastInst</a></div><div class="ttdeci">llvm::CastInst CastInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00156">BasicTypes.h:156</a></div></div>
|
|
3716
3749
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a0095d23a9c9d5d62ec4a23c56824b5f0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">SVF::LLVMUtil::getLLVMCallSite</a></div><div class="ttdeci">const CallBase * getLLVMCallSite(const Value *value)</div><div class="ttdoc">Return LLVM callsite given a value.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00068">LLVMUtil.h:68</a></div></div>
|
|
@@ -3727,34 +3760,35 @@ template<typename T > </div>
|
|
|
3727
3760
|
<div class="ttc" id="anamespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
|
|
3728
3761
|
<div class="ttc" id="anamespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00123">BasicTypes.h:123</a></div></div>
|
|
3729
3762
|
<div class="ttc" id="aclassSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector< const SVFType * > & getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00192">SVFType.h:192</a></div></div>
|
|
3730
|
-
<div class="ttc" id="
|
|
3763
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abb4b5ed04ec70a2e7fca8198132370cf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abb4b5ed04ec70a2e7fca8198132370cf">SVF::LLVMUtil::basicBlockHasRetInst</a></div><div class="ttdeci">bool basicBlockHasRetInst(const BasicBlock *bb)</div><div class="ttdoc">Return true if the function has a return instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00104">LLVMUtil.cpp:104</a></div></div>
|
|
3764
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa841a295ec803b6a1f2bd248f63f863f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">SVF::LLVMUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01183">LLVMUtil.cpp:1183</a></div></div>
|
|
3731
3765
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa81614cdb6a2a912638d5dc980480af7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa81614cdb6a2a912638d5dc980480af7">SVF::LLVMUtil::getRefTypeOfHeapAllocOrStatic</a></div><div class="ttdeci">const PointerType * getRefTypeOfHeapAllocOrStatic(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00155">LLVMUtil.h:155</a></div></div>
|
|
3732
3766
|
<div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_a5cd207bce618521166e6fa235014b297"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">SVF::cppUtil::DemangledName::className</a></div><div class="ttdeci">std::string className</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00048">CppUtil.h:48</a></div></div>
|
|
3733
3767
|
<div class="ttc" id="anamespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00273">BasicTypes.h:273</a></div></div>
|
|
3734
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_acee7c2fb08e111eda4d91ce5479de05e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">SVF::LLVMUtil::isUnusedGlobalVariable</a></div><div class="ttdeci">bool isUnusedGlobalVariable(const GlobalVariable &global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3768
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_acee7c2fb08e111eda4d91ce5479de05e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">SVF::LLVMUtil::isUnusedGlobalVariable</a></div><div class="ttdeci">bool isUnusedGlobalVariable(const GlobalVariable &global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00578">LLVMUtil.cpp:578</a></div></div>
|
|
3735
3769
|
<div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_a1dd17b240663bc9412adefde82385e02"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">SVF::cppUtil::DemangledName::funcName</a></div><div class="ttdeci">std::string funcName</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00049">CppUtil.h:49</a></div></div>
|
|
3736
3770
|
<div class="ttc" id="anamespaceSVF_html_afc1b50355821e7299df03b026e36f1df"><div class="ttname"><a href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">SVF::User</a></div><div class="ttdeci">llvm::User User</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00140">BasicTypes.h:140</a></div></div>
|
|
3737
3771
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3d34fcdfc98add848a34fd5259c11eb2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">SVF::LLVMUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const Function * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00057">LLVMUtil.h:57</a></div></div>
|
|
3738
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b32283ee2dbb9cef1d17ab6f2719e0c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">SVF::LLVMUtil::getSourceLocOfFunction</a></div><div class="ttdeci">const std::string getSourceLocOfFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3772
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b32283ee2dbb9cef1d17ab6f2719e0c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">SVF::LLVMUtil::getSourceLocOfFunction</a></div><div class="ttdeci">const std::string getSourceLocOfFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00783">LLVMUtil.cpp:783</a></div></div>
|
|
3739
3773
|
<div class="ttc" id="anamespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00118">BasicTypes.h:118</a></div></div>
|
|
3740
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector< const SVFInstruction * > &instList)</div><div class="ttdoc">Get the previous instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3774
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector< const SVFInstruction * > &instList)</div><div class="ttdoc">Get the previous instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00316">LLVMUtil.cpp:316</a></div></div>
|
|
3741
3775
|
<div class="ttc" id="aSVFFileSystem_8cpp_html_ab25baccb41e3b67ef0bfdaa1336c9649"><div class="ttname"><a href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a></div><div class="ttdeci">#define F(f)</div></div>
|
|
3742
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4638a12f5481dff947b59cf8353e619b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">SVF::LLVMUtil::isIntrinsicFun</a></div><div class="ttdeci">bool isIntrinsicFun(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3776
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4638a12f5481dff947b59cf8353e619b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">SVF::LLVMUtil::isIntrinsicFun</a></div><div class="ttdeci">bool isIntrinsicFun(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00202">LLVMUtil.cpp:202</a></div></div>
|
|
3743
3777
|
<div class="ttc" id="anamespaceSVF_html_a3011dbac9102f044ad5f36a4ad3d4a71"><div class="ttname"><a href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">SVF::NamedMDNode</a></div><div class="ttdeci">llvm::NamedMDNode NamedMDNode</div><div class="ttdoc">LLVM metadata and debug information.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
|
|
3744
3778
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a5a7dc8680a9714e08b01dd339b85bb20"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">SVF::LLVMUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00046">LLVMUtil.h:46</a></div></div>
|
|
3745
3779
|
<div class="ttc" id="anamespaceSVF_html_a28eec26ec8edaa5e96aecfeb01f6c0d4"><div class="ttname"><a href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">SVF::MDString</a></div><div class="ttdeci">llvm::MDString MDString</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00099">BasicTypes.h:99</a></div></div>
|
|
3746
3780
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a17cce1a11e1bfc342a9e3e79fe35deef"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a17cce1a11e1bfc342a9e3e79fe35deef">SVF::LLVMUtil::isNoCallerFunction</a></div><div class="ttdeci">bool isNoCallerFunction(const Function *fun)</div><div class="ttdoc">Function does not have any possible caller in the call graph.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00195">LLVMUtil.h:195</a></div></div>
|
|
3747
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afbd60d5443c7fa1448813d00bb5d0fa7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector< const SVFInstruction * > &instList)</div><div class="ttdoc">Get the next instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3748
|
-
<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#
|
|
3781
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afbd60d5443c7fa1448813d00bb5d0fa7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector< const SVFInstruction * > &instList)</div><div class="ttdoc">Get the next instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00287">LLVMUtil.cpp:287</a></div></div>
|
|
3782
|
+
<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>
|
|
3749
3783
|
<div class="ttc" id="anamespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00054">SVFType.h:54</a></div></div>
|
|
3750
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a003b769751b93b94bdb011bd704cfde1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">SVF::LLVMUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3784
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a003b769751b93b94bdb011bd704cfde1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">SVF::LLVMUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00216">LLVMUtil.cpp:216</a></div></div>
|
|
3751
3785
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00119">LLVMUtil.h:119</a></div></div>
|
|
3752
3786
|
<div class="ttc" id="anamespaceSVF_html_a7332f8059ea95472dcc231de884a5768"><div class="ttname"><a href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">SVF::ConstantData</a></div><div class="ttdeci">llvm::ConstantData ConstantData</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
|
|
3753
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6dd1590b82d2bd86766886bd21bc2b72"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">SVF::LLVMUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3787
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6dd1590b82d2bd86766886bd21bc2b72"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">SVF::LLVMUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01060">LLVMUtil.cpp:1060</a></div></div>
|
|
3754
3788
|
<div class="ttc" id="anamespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
|
|
3755
3789
|
<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>
|
|
3756
3790
|
<div class="ttc" id="anamespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00143">BasicTypes.h:143</a></div></div>
|
|
3757
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a416bcb6da0650f546cb7d83e6be850b6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">SVF::LLVMUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
3791
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a416bcb6da0650f546cb7d83e6be850b6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">SVF::LLVMUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01159">LLVMUtil.cpp:1159</a></div></div>
|
|
3758
3792
|
<!-- start footer part -->
|
|
3759
3793
|
<hr class="footer"/><address class="footer"><small>
|
|
3760
3794
|
Generated by  <a href="http://www.doxygen.org/index.html">
|