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
|
@@ -368,1119 +368,1129 @@ $(function() {
|
|
|
368
368
|
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  </div>
|
|
369
369
|
<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002"> 306</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a20162d2894d6a12ba29410311fba4002">LLVMModuleSet::initSVFBasicBlock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func)</div>
|
|
370
370
|
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> {</div>
|
|
371
|
-
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <
|
|
372
|
-
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> 
|
|
373
|
-
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> 
|
|
374
|
-
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <
|
|
375
|
-
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <
|
|
376
|
-
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> 
|
|
377
|
-
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> 
|
|
378
|
-
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> 
|
|
379
|
-
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> 
|
|
380
|
-
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> 
|
|
381
|
-
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> 
|
|
382
|
-
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span> 
|
|
383
|
-
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> 
|
|
384
|
-
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> 
|
|
385
|
-
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> 
|
|
386
|
-
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> 
|
|
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="
|
|
403
|
-
<div class="line"><a name="
|
|
404
|
-
<div class="line"><a name="
|
|
405
|
-
<div class="line"><a name="
|
|
406
|
-
<div class="line"><a name="
|
|
407
|
-
<div class="line"><a name="
|
|
408
|
-
<div class="line"><a name="
|
|
409
|
-
<div class="line"><a name="
|
|
410
|
-
<div class="line"><a name="
|
|
411
|
-
<div class="line"><a name="
|
|
412
|
-
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  svfcall-><a class="code" href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">addArgument</a>(svfval);</div>
|
|
371
|
+
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *svfFun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(func);</div>
|
|
372
|
+
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">for</span> (Function::const_iterator bit = func->begin(), ebit = func->end(); bit != ebit; ++bit)</div>
|
|
373
|
+
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  {</div>
|
|
374
|
+
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = &*bit;</div>
|
|
375
|
+
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfbb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
|
|
376
|
+
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(bb); succ_it != succ_end(bb); succ_it++)</div>
|
|
377
|
+
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  {</div>
|
|
378
|
+
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svf_scc_bb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(*succ_it);</div>
|
|
379
|
+
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  svfbb-><a class="code" href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">addSuccBasicBlock</a>(svf_scc_bb);</div>
|
|
380
|
+
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div>
|
|
381
|
+
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> pred_it = pred_begin(bb); pred_it != pred_end(bb); pred_it++)</div>
|
|
382
|
+
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  {</div>
|
|
383
|
+
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svf_pred_bb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(*pred_it);</div>
|
|
384
|
+
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  svfbb-><a class="code" href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">addPredBasicBlock</a>(svf_pred_bb);</div>
|
|
385
|
+
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div>
|
|
386
|
+
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  </div>
|
|
387
|
+
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">if</span> (svfbb-><a class="code" href="classSVF_1_1SVFBasicBlock.html#a66f51cd41e93ad055c4a0c2874e73fae">getSuccessors</a>().empty())</div>
|
|
388
|
+
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  {</div>
|
|
389
|
+
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abb4b5ed04ec70a2e7fca8198132370cf">LLVMUtil::basicBlockHasRetInst</a>(bb))</div>
|
|
390
|
+
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  {</div>
|
|
391
|
+
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  svfFun-><a class="code" href="classSVF_1_1SVFFunction.html#abd458bb5a035d3f7db32fac5f01b57f3">setExitBlock</a>(svfbb);</div>
|
|
392
|
+
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div>
|
|
393
|
+
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div>
|
|
394
|
+
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  </div>
|
|
395
|
+
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator iit = bb->begin(), eiit = bb->end(); iit != eiit; ++iit)</div>
|
|
396
|
+
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  {</div>
|
|
397
|
+
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &*iit;</div>
|
|
398
|
+
<div class="line"><a name="l00336"></a><span class="lineno"> 336</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>
|
|
399
|
+
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  {</div>
|
|
400
|
+
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfinst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(call);</div>
|
|
401
|
+
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>* svfcall = SVFUtil::cast<SVFCallInst>(svfinst);</div>
|
|
402
|
+
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keyword">auto</span> called_llvmval = call->getCalledOperand()->stripPointerCasts();</div>
|
|
403
|
+
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* called_llvmfunc = SVFUtil::dyn_cast<Function>(called_llvmval))</div>
|
|
404
|
+
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  {</div>
|
|
405
|
+
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* llvmfunc_def = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(called_llvmfunc);</div>
|
|
406
|
+
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(llvmfunc_def);</div>
|
|
407
|
+
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  svfcall-><a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(callee);</div>
|
|
408
|
+
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  }</div>
|
|
409
|
+
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">else</span></div>
|
|
410
|
+
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div>
|
|
411
|
+
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  svfcall-><a class="code" href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">setCalledOperand</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(called_llvmval));</div>
|
|
413
412
|
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  }</div>
|
|
414
|
-
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> 
|
|
415
|
-
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span> 
|
|
416
|
-
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> 
|
|
417
|
-
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> 
|
|
418
|
-
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span> 
|
|
419
|
-
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> }</div>
|
|
420
|
-
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  </div>
|
|
421
|
-
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> 
|
|
422
|
-
<div class="line"><a name="l00359"></a><span class="lineno"
|
|
423
|
-
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> 
|
|
424
|
-
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> 
|
|
425
|
-
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> 
|
|
426
|
-
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> 
|
|
427
|
-
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> 
|
|
428
|
-
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> 
|
|
429
|
-
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> 
|
|
430
|
-
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> 
|
|
431
|
-
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> 
|
|
432
|
-
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> 
|
|
433
|
-
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> 
|
|
434
|
-
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> 
|
|
435
|
-
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <
|
|
436
|
-
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span> 
|
|
437
|
-
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> 
|
|
438
|
-
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span> 
|
|
439
|
-
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span> 
|
|
440
|
-
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> 
|
|
441
|
-
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span> 
|
|
442
|
-
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> 
|
|
443
|
-
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span> 
|
|
444
|
-
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span> 
|
|
445
|
-
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span> 
|
|
446
|
-
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span> 
|
|
447
|
-
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <
|
|
448
|
-
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> 
|
|
449
|
-
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  </div>
|
|
450
|
-
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span> 
|
|
451
|
-
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> 
|
|
452
|
-
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a
|
|
453
|
-
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span> 
|
|
454
|
-
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span> 
|
|
455
|
-
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span> 
|
|
456
|
-
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span> 
|
|
457
|
-
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span> 
|
|
458
|
-
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span> 
|
|
459
|
-
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span> 
|
|
460
|
-
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span> 
|
|
461
|
-
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span> 
|
|
462
|
-
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span> 
|
|
463
|
-
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  </div>
|
|
464
|
-
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <
|
|
465
|
-
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span> 
|
|
466
|
-
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span> 
|
|
467
|
-
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#
|
|
468
|
-
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <
|
|
469
|
-
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span> 
|
|
470
|
-
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span> 
|
|
471
|
-
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> 
|
|
472
|
-
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> 
|
|
473
|
-
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span> 
|
|
474
|
-
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> 
|
|
475
|
-
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span> 
|
|
476
|
-
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span> 
|
|
477
|
-
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span> 
|
|
478
|
-
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span> 
|
|
479
|
-
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  </div>
|
|
480
|
-
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span> 
|
|
481
|
-
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span> 
|
|
482
|
-
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span> 
|
|
483
|
-
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span> 
|
|
484
|
-
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> 
|
|
485
|
-
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> 
|
|
486
|
-
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span> 
|
|
487
|
-
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span> 
|
|
488
|
-
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span> 
|
|
489
|
-
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span> }</div>
|
|
413
|
+
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SVFVirtualCallInst.html">SVFVirtualCallInst</a>* virtualCall = SVFUtil::dyn_cast<SVFVirtualCallInst>(svfcall))</div>
|
|
414
|
+
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  {</div>
|
|
415
|
+
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  virtualCall->setVtablePtr(<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">LLVMUtil::getVCallVtblPtr</a>(call)));</div>
|
|
416
|
+
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  virtualCall->setFunIdxInVtable(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">LLVMUtil::getVCallIdx</a>(call));</div>
|
|
417
|
+
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  virtualCall->setFunNameOfVirtualCall(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">LLVMUtil::getFunNameOfVCallSite</a>(call));</div>
|
|
418
|
+
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }</div>
|
|
419
|
+
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < call->arg_size(); i++)</div>
|
|
420
|
+
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  {</div>
|
|
421
|
+
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfval = <a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(call->getArgOperand(i));</div>
|
|
422
|
+
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  svfcall-><a class="code" href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">addArgument</a>(svfval);</div>
|
|
423
|
+
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div>
|
|
424
|
+
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  }</div>
|
|
425
|
+
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">LLVMUtil::getNextInsts</a>(inst, <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst)->getSuccInstructions());</div>
|
|
426
|
+
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">LLVMUtil::getPrevInsts</a>(inst, <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst)->getPredInstructions());</div>
|
|
427
|
+
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  }</div>
|
|
428
|
+
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div>
|
|
429
|
+
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> }</div>
|
|
430
|
+
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  </div>
|
|
431
|
+
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  </div>
|
|
432
|
+
<div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d"> 370</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">LLVMModuleSet::initDomTree</a>(<a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div>
|
|
433
|
+
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> {</div>
|
|
434
|
+
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">if</span> (fun->isDeclaration())</div>
|
|
435
|
+
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">return</span>;</div>
|
|
436
|
+
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="comment">//process and stored dt & df</span></div>
|
|
437
|
+
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div>
|
|
438
|
+
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a> df;</div>
|
|
439
|
+
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  dt.recalculate(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&<span class="keyword">></span>(*fun));</div>
|
|
440
|
+
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  df.analyze(dt);</div>
|
|
441
|
+
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a> loopInfo = <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>(dt);</div>
|
|
442
|
+
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a> pdt = <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&<span class="keyword">></span>(*fun));</div>
|
|
443
|
+
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld = svffun-><a class="code" href="classSVF_1_1SVFFunction.html#a5798ecc742ee74e357d13eea751258c4">getLoopAndDomInfo</a>();</div>
|
|
444
|
+
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  </div>
|
|
445
|
+
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFBasicBlock*,Set<const SVFBasicBlock*></a>> & dfBBsMap = ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae37546be7304c66b4eca2654d995eaa7">getDomFrontierMap</a>();</div>
|
|
446
|
+
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">for</span> (DominanceFrontierBase::const_iterator dfIter = df.begin(), eDfIter = df.end(); dfIter != eDfIter; dfIter++)</div>
|
|
447
|
+
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  {</div>
|
|
448
|
+
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* keyBB = dfIter->first;</div>
|
|
449
|
+
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keyword">const</span> std::set<BasicBlock* >& domSet = dfIter->second;</div>
|
|
450
|
+
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const SVFBasicBlock*></a>& valueBasicBlocks = dfBBsMap[<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(keyBB)];</div>
|
|
451
|
+
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bbValue:domSet)</div>
|
|
452
|
+
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  {</div>
|
|
453
|
+
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  valueBasicBlocks.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bbValue));</div>
|
|
454
|
+
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  }</div>
|
|
455
|
+
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  }</div>
|
|
456
|
+
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  std::vector<const SVFBasicBlock*> reachableBBs;</div>
|
|
457
|
+
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">LLVMUtil::getFunReachableBBs</a>(fun, reachableBBs);</div>
|
|
458
|
+
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">setReachableBBs</a>(reachableBBs);</div>
|
|
459
|
+
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  </div>
|
|
460
|
+
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">for</span> (Function::const_iterator bit = fun->begin(), beit = fun->end(); bit!=beit; ++bit)</div>
|
|
461
|
+
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  {</div>
|
|
462
|
+
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &bb = *bit;</div>
|
|
463
|
+
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(&bb);</div>
|
|
464
|
+
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* dtNode = dt.getNode(&bb))</div>
|
|
465
|
+
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  {</div>
|
|
466
|
+
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVFLoopAndDomInfo::BBSet</a>& bbSet = ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a2fc6b806a436d8fa65863f6cef99e716">getDomTreeMap</a>()[svfBB];</div>
|
|
467
|
+
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *dtNode)</div>
|
|
468
|
+
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  {</div>
|
|
469
|
+
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keyword">const</span> <span class="keyword">auto</span>* domSVFBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(domBB->getBlock());</div>
|
|
470
|
+
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  bbSet.insert(domSVFBB);</div>
|
|
471
|
+
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div>
|
|
472
|
+
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  }</div>
|
|
473
|
+
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  </div>
|
|
474
|
+
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a>* pdtNode = pdt.getNode(&bb))</div>
|
|
475
|
+
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  {</div>
|
|
476
|
+
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> level = pdtNode->getLevel();</div>
|
|
477
|
+
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ac285502846c993f149b6bcc3e04f767e">getBBPDomLevel</a>()[svfBB] = level;</div>
|
|
478
|
+
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* idomBB = pdtNode->getIDom()->getBlock();</div>
|
|
479
|
+
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* idom = idomBB == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a> ? <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>: <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(idomBB);</div>
|
|
480
|
+
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae8a308d5ee34c0eb4a6c1278565e5907">getBB2PIdom</a>()[svfBB] = idom;</div>
|
|
481
|
+
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  </div>
|
|
482
|
+
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVFLoopAndDomInfo::BBSet</a>& bbSet = ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad07f95e790b5c3a50c864155aa20a083">getPostDomTreeMap</a>()[svfBB];</div>
|
|
483
|
+
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> domBB : *pdtNode)</div>
|
|
484
|
+
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  {</div>
|
|
485
|
+
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keyword">const</span> <span class="keyword">auto</span>* domSVFBB = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(domBB->getBlock());</div>
|
|
486
|
+
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  bbSet.insert(domSVFBB);</div>
|
|
487
|
+
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  }</div>
|
|
488
|
+
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div>
|
|
490
489
|
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  </div>
|
|
491
|
-
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  </div>
|
|
492
|
-
<div class="line"><a name="
|
|
493
|
-
<div class="line"><a name="
|
|
494
|
-
<div class="line"><a name="
|
|
495
|
-
<div class="line"><a name="
|
|
496
|
-
<div class="line"><a name="
|
|
497
|
-
<div class="line"><a name="
|
|
498
|
-
<div class="line"><a name="
|
|
499
|
-
<div class="line"><a name="
|
|
500
|
-
<div class="line"><a name="
|
|
501
|
-
<div class="line"><a name="
|
|
502
|
-
<div class="line"><a name="
|
|
503
|
-
<div class="line"><a name="
|
|
504
|
-
<div class="line"><a name="
|
|
505
|
-
<div class="line"><a name="
|
|
506
|
-
<div class="line"><a name="
|
|
507
|
-
<div class="line"><a name="
|
|
508
|
-
<div class="line"><a name="
|
|
509
|
-
<div class="line"><a name="
|
|
510
|
-
<div class="line"><a name="
|
|
511
|
-
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span> 
|
|
512
|
-
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span> 
|
|
513
|
-
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  </div>
|
|
514
|
-
<div class="line"><a name="l00456"></a><span class="lineno"
|
|
515
|
-
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span> 
|
|
516
|
-
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span> 
|
|
517
|
-
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span> 
|
|
518
|
-
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span> 
|
|
519
|
-
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span> 
|
|
520
|
-
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span> 
|
|
521
|
-
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span> 
|
|
522
|
-
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span> 
|
|
523
|
-
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span> 
|
|
524
|
-
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span> 
|
|
525
|
-
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span> 
|
|
526
|
-
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span> 
|
|
527
|
-
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span> 
|
|
528
|
-
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span> 
|
|
529
|
-
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  </div>
|
|
530
|
-
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  mset-><a class="code" href="classSVF_1_1LLVMModuleSet.html#
|
|
531
|
-
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> 
|
|
532
|
-
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <a class="code" href="
|
|
533
|
-
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span> 
|
|
534
|
-
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  </div>
|
|
535
|
-
<div class="line"><a name="l00477"></a><span class="lineno"
|
|
536
|
-
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span> 
|
|
537
|
-
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  </div>
|
|
538
|
-
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span> 
|
|
539
|
-
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span> 
|
|
540
|
-
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> 
|
|
541
|
-
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span> 
|
|
542
|
-
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span> 
|
|
543
|
-
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span> 
|
|
544
|
-
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span> 
|
|
545
|
-
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span> 
|
|
546
|
-
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span> 
|
|
547
|
-
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span> 
|
|
548
|
-
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span> 
|
|
549
|
-
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="
|
|
550
|
-
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span> 
|
|
551
|
-
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span> 
|
|
552
|
-
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span> 
|
|
553
|
-
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> 
|
|
554
|
-
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span> 
|
|
555
|
-
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span> 
|
|
556
|
-
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span> 
|
|
557
|
-
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span> 
|
|
558
|
-
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span> 
|
|
559
|
-
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="comment">//
|
|
560
|
-
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="
|
|
561
|
-
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span> 
|
|
562
|
-
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span> 
|
|
563
|
-
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="comment"
|
|
564
|
-
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="comment">//
|
|
565
|
-
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="comment">//
|
|
566
|
-
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="comment"
|
|
567
|
-
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <
|
|
568
|
-
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span> 
|
|
569
|
-
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="
|
|
570
|
-
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span> 
|
|
571
|
-
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span> 
|
|
572
|
-
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span> 
|
|
573
|
-
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span> 
|
|
574
|
-
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span> 
|
|
575
|
-
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span> 
|
|
576
|
-
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span> 
|
|
577
|
-
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span> 
|
|
578
|
-
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> 
|
|
579
|
-
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span> 
|
|
580
|
-
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span> 
|
|
581
|
-
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span> 
|
|
582
|
-
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> 
|
|
583
|
-
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span> 
|
|
584
|
-
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span> 
|
|
585
|
-
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span> 
|
|
586
|
-
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span> 
|
|
587
|
-
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span> 
|
|
588
|
-
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> 
|
|
589
|
-
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  </div>
|
|
590
|
-
<div class="line"><a name="l00532"></a><span class="lineno"
|
|
591
|
-
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span> {</div>
|
|
592
|
-
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span> 
|
|
593
|
-
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span> 
|
|
594
|
-
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span> 
|
|
595
|
-
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span> 
|
|
596
|
-
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <
|
|
597
|
-
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span> 
|
|
598
|
-
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span> 
|
|
599
|
-
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span> 
|
|
600
|
-
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span> 
|
|
601
|
-
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span> 
|
|
602
|
-
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> 
|
|
603
|
-
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span> 
|
|
604
|
-
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span> 
|
|
605
|
-
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> 
|
|
606
|
-
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <
|
|
607
|
-
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> 
|
|
608
|
-
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span> 
|
|
609
|
-
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span> 
|
|
490
|
+
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* loop = loopInfo.getLoopFor(&bb))</div>
|
|
491
|
+
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  {</div>
|
|
492
|
+
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* loopBlock : loop->getBlocks())</div>
|
|
493
|
+
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  {</div>
|
|
494
|
+
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* loopbb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(loopBlock);</div>
|
|
495
|
+
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  ld-><a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">addToBB2LoopMap</a>(svfBB, loopbb);</div>
|
|
496
|
+
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div>
|
|
497
|
+
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  }</div>
|
|
498
|
+
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  }</div>
|
|
499
|
+
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> }</div>
|
|
500
|
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  </div>
|
|
501
|
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  </div>
|
|
502
|
+
<div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb"> 443</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">LLVMModuleSet::prePassSchedule</a>()</div>
|
|
503
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span> {</div>
|
|
504
|
+
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  std::unique_ptr<BreakConstantGEPs> p1 = std::make_unique<BreakConstantGEPs>();</div>
|
|
505
|
+
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div>
|
|
506
|
+
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  {</div>
|
|
507
|
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  p1->runOnModule(M);</div>
|
|
508
|
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  }</div>
|
|
509
|
+
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  </div>
|
|
510
|
+
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  std::unique_ptr<UnifyFunctionExitNodes> p2 =</div>
|
|
511
|
+
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  std::make_unique<UnifyFunctionExitNodes>();</div>
|
|
512
|
+
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &M : <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">getLLVMModules</a>())</div>
|
|
513
|
+
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  {</div>
|
|
514
|
+
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> = M.begin(), E = M.end(); <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> != E; ++<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
515
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  {</div>
|
|
516
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> &fun = *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>;</div>
|
|
517
|
+
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">if</span> (fun.isDeclaration())</div>
|
|
518
|
+
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">continue</span>;</div>
|
|
519
|
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  p2->runOnFunction(fun);</div>
|
|
520
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  }</div>
|
|
521
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  }</div>
|
|
522
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span> }</div>
|
|
523
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  </div>
|
|
524
|
+
<div class="line"><a name="l00467"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a2fdc1bd61b8f6cdf6c07a5059b641b04"> 467</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2fdc1bd61b8f6cdf6c07a5059b641b04">LLVMModuleSet::preProcessBCs</a>(std::vector<std::string> &moduleNameVec)</div>
|
|
525
|
+
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span> {</div>
|
|
526
|
+
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* mset = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">getLLVMModuleSet</a>();</div>
|
|
527
|
+
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  mset-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">loadModules</a>(moduleNameVec);</div>
|
|
528
|
+
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  mset-><a class="code" href="classSVF_1_1LLVMModuleSet.html#aa7992d03a48ec79bde169ddceb6ef67b">loadExtAPIModules</a>();</div>
|
|
529
|
+
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  mset-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">prePassSchedule</a>();</div>
|
|
530
|
+
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  </div>
|
|
531
|
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> preProcessSuffix = <span class="stringliteral">".pre.bc"</span>;</div>
|
|
532
|
+
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="comment">// Get the existing module names, remove old extension, add preProcessSuffix</span></div>
|
|
533
|
+
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < moduleNameVec.size(); i++)</div>
|
|
534
|
+
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  {</div>
|
|
535
|
+
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lastIndex = moduleNameVec[i].find_last_of(<span class="stringliteral">"."</span>);</div>
|
|
536
|
+
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> rawName = moduleNameVec[i].substr(0, lastIndex);</div>
|
|
537
|
+
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  moduleNameVec[i] = (rawName + preProcessSuffix);</div>
|
|
538
|
+
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div>
|
|
539
|
+
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  </div>
|
|
540
|
+
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  mset-><a class="code" href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">dumpModulesToFile</a>(preProcessSuffix);</div>
|
|
541
|
+
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">preProcessed</a> = <span class="keyword">true</span>;</div>
|
|
542
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">releaseLLVMModuleSet</a>();</div>
|
|
543
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span> }</div>
|
|
544
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  </div>
|
|
545
|
+
<div class="line"><a name="l00488"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789"> 488</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">LLVMModuleSet::loadModules</a>(<span class="keyword">const</span> std::vector<std::string> &moduleNameVec)</div>
|
|
546
|
+
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span> {</div>
|
|
547
|
+
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  </div>
|
|
548
|
+
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="comment">// We read SVFIR from LLVM IR</span></div>
|
|
549
|
+
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a53f783c80f368bcdca6c7620229d6f8e">Options::Graphtxt</a>().<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>())</div>
|
|
550
|
+
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  {</div>
|
|
551
|
+
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">if</span>(moduleNameVec.empty())</div>
|
|
552
|
+
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  {</div>
|
|
553
|
+
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"no LLVM bc file is found!\n"</span>;</div>
|
|
554
|
+
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  exit(0);</div>
|
|
555
|
+
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  }</div>
|
|
556
|
+
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="comment">//assert(!moduleNameVec.empty() && "no LLVM bc file is found!");</span></div>
|
|
557
|
+
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  }</div>
|
|
558
|
+
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="comment">// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR</span></div>
|
|
559
|
+
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="keywordflow">else</span></div>
|
|
560
|
+
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <a class="code" href="classSVF_1_1SVFModule.html#a7af3076a26060090377d1f74293560fe">SVFModule::setPagFromTXT</a>(<a class="code" href="classSVF_1_1Options.html#a53f783c80f368bcdca6c7620229d6f8e">Options::Graphtxt</a>());</div>
|
|
561
|
+
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  </div>
|
|
562
|
+
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="comment">//</span></div>
|
|
563
|
+
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="comment">// To avoid the following type bugs (t1 != t3) when parsing multiple modules,</span></div>
|
|
564
|
+
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="comment">// We should use only one LLVMContext object for multiple modules in the same thread.</span></div>
|
|
565
|
+
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="comment">// No such problem if only one module is processed by SVF.</span></div>
|
|
566
|
+
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="comment">// ------------------------------------------------------------------</span></div>
|
|
567
|
+
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="comment">// LLVMContext ctxa,ctxb;</span></div>
|
|
568
|
+
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="comment">// IntegerType * t1 = IntegerType::get(ctxa,32);</span></div>
|
|
569
|
+
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="comment">// IntegerType * t2 = IntegerType::get(ctxa,32);</span></div>
|
|
570
|
+
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="comment">// assert(t1 == t2);</span></div>
|
|
571
|
+
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="comment">// IntegerType * t3 = IntegerType::get(ctxb,32);</span></div>
|
|
572
|
+
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="comment">// IntegerType * t4 = IntegerType::get(ctxb,32);</span></div>
|
|
573
|
+
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="comment">// assert(t3 == t4);</span></div>
|
|
574
|
+
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="comment">// assert(t1 != t3);</span></div>
|
|
575
|
+
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="comment">// ------------------------------------------------------------------</span></div>
|
|
576
|
+
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="comment">//</span></div>
|
|
577
|
+
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> = std::make_unique<LLVMContext>();</div>
|
|
578
|
+
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  </div>
|
|
579
|
+
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& moduleName : moduleNameVec)</div>
|
|
580
|
+
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  {</div>
|
|
581
|
+
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(moduleName))</div>
|
|
582
|
+
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  {</div>
|
|
583
|
+
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"not an IR file: "</span> << moduleName << std::endl;</div>
|
|
584
|
+
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  abort();</div>
|
|
585
|
+
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  }</div>
|
|
586
|
+
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  </div>
|
|
587
|
+
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
|
|
588
|
+
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  std::unique_ptr<Module> mod = parseIRFile(moduleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
|
|
589
|
+
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
|
|
590
|
+
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div>
|
|
591
|
+
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"load module: "</span> << moduleName << <span class="stringliteral">"failed!!\n\n"</span>;</div>
|
|
592
|
+
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  Err.print(<span class="stringliteral">"SVFModuleLoader"</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
|
|
593
|
+
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  abort();</div>
|
|
594
|
+
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  }</div>
|
|
595
|
+
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.emplace_back(*mod);</div>
|
|
596
|
+
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">owned_modules</a>.emplace_back(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(mod));</div>
|
|
597
|
+
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  }</div>
|
|
598
|
+
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span> }</div>
|
|
599
|
+
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  </div>
|
|
600
|
+
<div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#aa7992d03a48ec79bde169ddceb6ef67b"> 543</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa7992d03a48ec79bde169ddceb6ef67b">LLVMModuleSet::loadExtAPIModules</a>(std::unique_ptr<LLVMContext> context)</div>
|
|
601
|
+
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> {</div>
|
|
602
|
+
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="comment">// Load external API module (extapi.bc)</span></div>
|
|
603
|
+
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()->getExtBcPath().<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">empty</a>())</div>
|
|
604
|
+
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  {</div>
|
|
605
|
+
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> extModuleName = <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-><a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>();</div>
|
|
606
|
+
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(extModuleName))</div>
|
|
607
|
+
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  {</div>
|
|
608
|
+
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"not an external IR file: "</span> << extModuleName << std::endl;</div>
|
|
610
609
|
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  abort();</div>
|
|
611
610
|
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  }</div>
|
|
612
|
-
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <
|
|
613
|
-
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <
|
|
614
|
-
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <
|
|
615
|
-
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span> 
|
|
616
|
-
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span> 
|
|
617
|
-
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span> 
|
|
618
|
-
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span> 
|
|
619
|
-
<div class="line"><a name="l00561"></a><span class="lineno"
|
|
620
|
-
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span> 
|
|
621
|
-
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span> 
|
|
622
|
-
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span> 
|
|
623
|
-
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span> 
|
|
624
|
-
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> 
|
|
625
|
-
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span> 
|
|
626
|
-
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span> 
|
|
627
|
-
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> 
|
|
628
|
-
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span> 
|
|
629
|
-
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span> 
|
|
630
|
-
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> 
|
|
631
|
-
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span> 
|
|
632
|
-
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="comment">//
|
|
633
|
-
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="comment">//
|
|
634
|
-
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="comment">//
|
|
635
|
-
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="comment">// function
|
|
636
|
-
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="comment">//
|
|
637
|
-
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  </div>
|
|
638
|
-
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span> 
|
|
639
|
-
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="comment">//
|
|
640
|
-
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="comment">//
|
|
641
|
-
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="comment">//
|
|
642
|
-
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="
|
|
643
|
-
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span> 
|
|
644
|
-
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="
|
|
645
|
-
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span> 
|
|
646
|
-
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> 
|
|
647
|
-
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span> 
|
|
648
|
-
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span> 
|
|
649
|
-
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span> 
|
|
650
|
-
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span> 
|
|
651
|
-
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span> 
|
|
652
|
-
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span> 
|
|
653
|
-
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span> 
|
|
654
|
-
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span> 
|
|
655
|
-
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span> 
|
|
656
|
-
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span> 
|
|
657
|
-
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span> 
|
|
658
|
-
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> 
|
|
659
|
-
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span> 
|
|
660
|
-
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span> 
|
|
661
|
-
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span> 
|
|
662
|
-
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> 
|
|
663
|
-
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span> 
|
|
664
|
-
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span> 
|
|
665
|
-
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span> 
|
|
666
|
-
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span> 
|
|
667
|
-
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  </div>
|
|
668
|
-
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span> 
|
|
669
|
-
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span> 
|
|
670
|
-
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span> 
|
|
671
|
-
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span> 
|
|
672
|
-
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span> 
|
|
673
|
-
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span> 
|
|
674
|
-
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span> 
|
|
675
|
-
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span> 
|
|
676
|
-
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span> 
|
|
677
|
-
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span> 
|
|
678
|
-
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span> 
|
|
679
|
-
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span> 
|
|
680
|
-
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span> 
|
|
681
|
-
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span> 
|
|
682
|
-
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  </div>
|
|
683
|
-
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span> 
|
|
684
|
-
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span> 
|
|
685
|
-
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span> 
|
|
686
|
-
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span> 
|
|
687
|
-
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span> 
|
|
688
|
-
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  </div>
|
|
689
|
-
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="
|
|
690
|
-
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span> 
|
|
691
|
-
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span> 
|
|
692
|
-
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span> 
|
|
693
|
-
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span> 
|
|
694
|
-
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span> 
|
|
695
|
-
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span> 
|
|
696
|
-
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span> 
|
|
697
|
-
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span> 
|
|
698
|
-
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span> 
|
|
699
|
-
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span> 
|
|
700
|
-
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span> 
|
|
701
|
-
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span> 
|
|
702
|
-
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span> 
|
|
703
|
-
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span> 
|
|
704
|
-
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span> 
|
|
705
|
-
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span> 
|
|
706
|
-
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span> }</div>
|
|
707
|
-
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span> 
|
|
708
|
-
<div class="line"><a name="l00650"></a><span class="lineno"
|
|
709
|
-
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span> 
|
|
710
|
-
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span> 
|
|
711
|
-
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span> 
|
|
712
|
-
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> 
|
|
713
|
-
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span> 
|
|
714
|
-
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span> 
|
|
715
|
-
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span> 
|
|
716
|
-
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span> 
|
|
717
|
-
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span> 
|
|
718
|
-
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span> 
|
|
719
|
-
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span> 
|
|
720
|
-
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> 
|
|
721
|
-
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> 
|
|
722
|
-
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span> 
|
|
723
|
-
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span> 
|
|
724
|
-
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span> 
|
|
725
|
-
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span> 
|
|
726
|
-
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span> 
|
|
727
|
-
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span> 
|
|
728
|
-
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span> 
|
|
729
|
-
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  </div>
|
|
730
|
-
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span> 
|
|
731
|
-
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span> 
|
|
732
|
-
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span> 
|
|
733
|
-
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span> 
|
|
734
|
-
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span> 
|
|
735
|
-
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span> 
|
|
736
|
-
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span> 
|
|
737
|
-
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span> 
|
|
738
|
-
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span> 
|
|
739
|
-
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> 
|
|
740
|
-
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> 
|
|
741
|
-
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span> 
|
|
742
|
-
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span> 
|
|
743
|
-
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span> 
|
|
744
|
-
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  </div>
|
|
745
|
-
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span> 
|
|
746
|
-
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span> 
|
|
747
|
-
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span> 
|
|
748
|
-
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  (
|
|
749
|
-
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span> 
|
|
750
|
-
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span> 
|
|
751
|
-
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span> 
|
|
752
|
-
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span> 
|
|
753
|
-
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span> 
|
|
754
|
-
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span> 
|
|
755
|
-
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span> 
|
|
756
|
-
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span> 
|
|
757
|
-
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span> 
|
|
758
|
-
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span> 
|
|
759
|
-
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span> 
|
|
760
|
-
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span> 
|
|
761
|
-
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span> 
|
|
762
|
-
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <a class="code" href="namespaceSVF.html#
|
|
763
|
-
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span> 
|
|
764
|
-
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <a class="code" href="namespaceSVF.html#
|
|
765
|
-
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span> 
|
|
766
|
-
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span> 
|
|
767
|
-
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span> 
|
|
768
|
-
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span> 
|
|
769
|
-
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span> 
|
|
770
|
-
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span> 
|
|
771
|
-
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span> 
|
|
772
|
-
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span> 
|
|
773
|
-
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <
|
|
774
|
-
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> 
|
|
775
|
-
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <
|
|
776
|
-
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span> 
|
|
777
|
-
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span> 
|
|
778
|
-
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span> 
|
|
779
|
-
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span> 
|
|
780
|
-
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> 
|
|
781
|
-
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span> 
|
|
782
|
-
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> 
|
|
783
|
-
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <
|
|
784
|
-
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="comment">// functions
|
|
785
|
-
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span> 
|
|
786
|
-
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <
|
|
787
|
-
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span> 
|
|
788
|
-
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span> 
|
|
789
|
-
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span> 
|
|
790
|
-
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span> 
|
|
791
|
-
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span> 
|
|
792
|
-
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span> 
|
|
793
|
-
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span> 
|
|
794
|
-
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span> 
|
|
795
|
-
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span> 
|
|
796
|
-
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span> 
|
|
797
|
-
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <
|
|
798
|
-
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span> 
|
|
799
|
-
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span> 
|
|
800
|
-
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span> 
|
|
801
|
-
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  </div>
|
|
802
|
-
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span> 
|
|
803
|
-
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span> 
|
|
804
|
-
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span> 
|
|
805
|
-
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span> 
|
|
806
|
-
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span> 
|
|
807
|
-
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span> 
|
|
808
|
-
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span> 
|
|
809
|
-
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span> 
|
|
810
|
-
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span> 
|
|
811
|
-
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span> 
|
|
812
|
-
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span> 
|
|
813
|
-
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span> <span class="comment"
|
|
814
|
-
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="comment">
|
|
815
|
-
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span> <span class="comment">
|
|
816
|
-
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span> <span class="comment">
|
|
817
|
-
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> <span class="comment">
|
|
818
|
-
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span> <span class="comment"
|
|
819
|
-
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="comment">
|
|
820
|
-
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> <span class="comment">
|
|
821
|
-
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span> <span class="comment">
|
|
822
|
-
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span> <span class="comment">
|
|
823
|
-
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span> <span class="comment">
|
|
824
|
-
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span> <span class="comment">
|
|
825
|
-
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span> <span class="comment">
|
|
826
|
-
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span> <span class="comment">
|
|
827
|
-
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <span class="comment">
|
|
828
|
-
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span> <span class="comment">
|
|
829
|
-
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span> <span class="comment">
|
|
830
|
-
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span> <span class="comment">
|
|
831
|
-
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span> <span class="comment"
|
|
832
|
-
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span> <span class="comment">
|
|
833
|
-
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span> <span class="comment">
|
|
834
|
-
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span> <span class="comment">
|
|
835
|
-
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="comment">
|
|
836
|
-
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="comment">
|
|
837
|
-
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span> <span class="comment">
|
|
838
|
-
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="comment">
|
|
839
|
-
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="comment">
|
|
611
|
+
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SMDiagnostic</a> Err;</div>
|
|
612
|
+
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  assert(!(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> == <span class="keyword">nullptr</span> && context == <span class="keyword">nullptr</span>) && <span class="stringliteral">"Before loading extapi module, at least one LLVMContext should be initialized !!!"</span>);</div>
|
|
613
|
+
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">if</span> (context != <span class="keyword">nullptr</span>)</div>
|
|
614
|
+
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a> = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(context);</div>
|
|
615
|
+
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  std::unique_ptr<Module> mod = parseIRFile(extModuleName, Err, *<a class="code" href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">cxts</a>);</div>
|
|
616
|
+
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">if</span> (mod == <span class="keyword">nullptr</span>)</div>
|
|
617
|
+
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  {</div>
|
|
618
|
+
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"load external module: "</span> << extModuleName << <span class="stringliteral">"failed!!\n\n"</span>;</div>
|
|
619
|
+
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  Err.print(<span class="stringliteral">"SVFModuleLoader"</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
|
|
620
|
+
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  abort();</div>
|
|
621
|
+
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  }</div>
|
|
622
|
+
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="comment">// The module of extapi.bc needs to be inserted before applications modules, like std::vector<std::reference_wrapper<Module>> modules{extapi_module, app_module}.</span></div>
|
|
623
|
+
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="comment">// Otherwise, when overwriting the app function with SVF extern function, the corresponding SVFFunction of the extern function will not be found.</span></div>
|
|
624
|
+
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>.begin(), *mod);</div>
|
|
625
|
+
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">owned_modules</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">owned_modules</a>.begin(),<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(mod));</div>
|
|
626
|
+
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  }</div>
|
|
627
|
+
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span> }</div>
|
|
628
|
+
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  </div>
|
|
629
|
+
<div class="line"><a name="l00572"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1"> 572</a></span> std::vector<const Function* > <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">LLVMModuleSet::getLLVMGlobalFunctions</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *global)</div>
|
|
630
|
+
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span> {</div>
|
|
631
|
+
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="comment">// This function is used to extract constructor and destructor functions</span></div>
|
|
632
|
+
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="comment">// sorted by their priority from @llvm.global_ctors or @llvm.global_dtors.</span></div>
|
|
633
|
+
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="comment">// For example, given following @llvm.global_ctors, the returning sorted</span></div>
|
|
634
|
+
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="comment">// function list should be [ctor3, ctor1, ctor2].</span></div>
|
|
635
|
+
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="comment">// ------------------------------------------------------------------</span></div>
|
|
636
|
+
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="comment">// ; Each struct in the array is {priority, function, associated data}</span></div>
|
|
637
|
+
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="comment">//</span></div>
|
|
638
|
+
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="comment">// @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }]</span></div>
|
|
639
|
+
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="comment">// [{ i32, void ()*, i8* } { i32 1234, void ()* @ctor1.cpp, i8* null },</span></div>
|
|
640
|
+
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="comment">// { i32, void ()*, i8* } { i32 2345, void ()* @ctor2.cpp, i8* null },</span></div>
|
|
641
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="comment">// { i32, void ()*, i8* } { i32 345, void ()* @ctor3.cpp, i8* null }]</span></div>
|
|
642
|
+
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="comment">// ------------------------------------------------------------------</span></div>
|
|
643
|
+
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="comment">// TODO: According to LLVM language reference, if the third field is</span></div>
|
|
644
|
+
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="comment">// non-null, and points to a global variable or function, the initializer</span></div>
|
|
645
|
+
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="comment">// function will only run if the associated data from the current module is</span></div>
|
|
646
|
+
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="comment">// not discarded. However the associated data is currently ignored.</span></div>
|
|
647
|
+
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  </div>
|
|
648
|
+
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  </div>
|
|
649
|
+
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="comment">// This class is used for the priority queue that sorts the functions by</span></div>
|
|
650
|
+
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="comment">// their priority. Each object of this class stands for an item in the</span></div>
|
|
651
|
+
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="comment">// function array.</span></div>
|
|
652
|
+
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keyword">class </span>LLVMGlobalFunction</div>
|
|
653
|
+
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  {</div>
|
|
654
|
+
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keyword">public</span>:</div>
|
|
655
|
+
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> priority;</div>
|
|
656
|
+
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func;</div>
|
|
657
|
+
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  LLVMGlobalFunction() {};</div>
|
|
658
|
+
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  LLVMGlobalFunction(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> _priority, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* _func)</div>
|
|
659
|
+
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  : priority(_priority), func(_func) {};</div>
|
|
660
|
+
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">operator></a>(<span class="keyword">const</span> LLVMGlobalFunction &other)<span class="keyword"> const</span></div>
|
|
661
|
+
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> <span class="keyword"> </span>{</div>
|
|
662
|
+
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordflow">if</span> (priority != other.priority)</div>
|
|
663
|
+
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  {</div>
|
|
664
|
+
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">return</span> priority > other.priority;</div>
|
|
665
|
+
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  }</div>
|
|
666
|
+
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordflow">else</span></div>
|
|
667
|
+
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  {</div>
|
|
668
|
+
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">return</span> func > other.func;</div>
|
|
669
|
+
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  }</div>
|
|
670
|
+
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  }</div>
|
|
671
|
+
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  };</div>
|
|
672
|
+
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  </div>
|
|
673
|
+
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  std::priority_queue<LLVMGlobalFunction, std::vector<LLVMGlobalFunction>,</div>
|
|
674
|
+
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  greater<LLVMGlobalFunction>></div>
|
|
675
|
+
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  queue;</div>
|
|
676
|
+
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  std::vector<const Function* > result;</div>
|
|
677
|
+
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  </div>
|
|
678
|
+
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="comment">// The @llvm.global_ctors/dtors global variable is an array of struct. Each</span></div>
|
|
679
|
+
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="comment">// struct has three fields: {i32 priority, void ()* @ctor/dtor, i8* @data}.</span></div>
|
|
680
|
+
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="comment">// First get the array here.</span></div>
|
|
681
|
+
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *globalFuncArray =</div>
|
|
682
|
+
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  SVFUtil::dyn_cast<ConstantArray>(global->getInitializer()))</div>
|
|
683
|
+
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  {</div>
|
|
684
|
+
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="comment">// Get each struct in the array.</span></div>
|
|
685
|
+
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < globalFuncArray->getNumOperands(); ++i)</div>
|
|
686
|
+
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  {</div>
|
|
687
|
+
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">if</span> (</div>
|
|
688
|
+
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *globalFuncItem =</div>
|
|
689
|
+
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  SVFUtil::dyn_cast<ConstantStruct>(</div>
|
|
690
|
+
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  globalFuncArray->getOperand(i)))</div>
|
|
691
|
+
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  {</div>
|
|
692
|
+
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  </div>
|
|
693
|
+
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="comment">// Extract priority and function from the struct</span></div>
|
|
694
|
+
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* priority = SVFUtil::dyn_cast<ConstantInt>(</div>
|
|
695
|
+
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  globalFuncItem->getOperand(0));</div>
|
|
696
|
+
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast<Function>(</div>
|
|
697
|
+
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  globalFuncItem->getOperand(1));</div>
|
|
698
|
+
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  </div>
|
|
699
|
+
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">if</span> (priority && func)</div>
|
|
700
|
+
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  {</div>
|
|
701
|
+
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  queue.push(LLVMGlobalFunction(priority</div>
|
|
702
|
+
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  ->getZExtValue(),</div>
|
|
703
|
+
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  func));</div>
|
|
704
|
+
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  }</div>
|
|
705
|
+
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  }</div>
|
|
706
|
+
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  }</div>
|
|
707
|
+
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  }</div>
|
|
708
|
+
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  </div>
|
|
709
|
+
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="comment">// Generate a sorted vector of functions from the priority queue.</span></div>
|
|
710
|
+
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keywordflow">while</span> (!queue.empty())</div>
|
|
711
|
+
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  {</div>
|
|
712
|
+
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  result.push_back(queue.top().func);</div>
|
|
713
|
+
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  queue.pop();</div>
|
|
714
|
+
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  }</div>
|
|
715
|
+
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keywordflow">return</span> result;</div>
|
|
716
|
+
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span> }</div>
|
|
717
|
+
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  </div>
|
|
718
|
+
<div class="line"><a name="l00661"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a8af6b911b728713f66f7c809d5c0fbf1"> 661</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a8af6b911b728713f66f7c809d5c0fbf1">LLVMModuleSet::addSVFMain</a>()</div>
|
|
719
|
+
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> {</div>
|
|
720
|
+
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  std::vector<const Function*> ctor_funcs;</div>
|
|
721
|
+
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  std::vector<const Function*> dtor_funcs;</div>
|
|
722
|
+
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* orgMain = 0;</div>
|
|
723
|
+
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mainMod = <span class="keyword">nullptr</span>;</div>
|
|
724
|
+
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  </div>
|
|
725
|
+
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
|
|
726
|
+
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  {</div>
|
|
727
|
+
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="comment">// Collect ctor and dtor functions</span></div>
|
|
728
|
+
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>& global : mod.globals())</div>
|
|
729
|
+
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  {</div>
|
|
730
|
+
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordflow">if</span> (global.getName().equals(<a class="code" href="LLVMModule_8cpp.html#aa18802f2f60ef8030c66a42f20f285af">SVF_GLOBAL_CTORS</a>) && global.hasInitializer())</div>
|
|
731
|
+
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  {</div>
|
|
732
|
+
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  ctor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&global);</div>
|
|
733
|
+
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  }</div>
|
|
734
|
+
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (global.getName().equals(<a class="code" href="LLVMModule_8cpp.html#a9fd6e28e6ed93f65a20a348ab0646320">SVF_GLOBAL_DTORS</a>) && global.hasInitializer())</div>
|
|
735
|
+
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  {</div>
|
|
736
|
+
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  dtor_funcs = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">getLLVMGlobalFunctions</a>(&global);</div>
|
|
737
|
+
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  }</div>
|
|
738
|
+
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  }</div>
|
|
739
|
+
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  </div>
|
|
740
|
+
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="comment">// Find main function</span></div>
|
|
741
|
+
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> &func : mod)</div>
|
|
742
|
+
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  {</div>
|
|
743
|
+
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keyword">auto</span> funName = func.getName();</div>
|
|
744
|
+
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  </div>
|
|
745
|
+
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  assert(!funName.equals(<a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>) && <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a> <span class="stringliteral">" already defined"</span>);</div>
|
|
746
|
+
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  </div>
|
|
747
|
+
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keywordflow">if</span> (funName.equals(<span class="stringliteral">"main"</span>))</div>
|
|
748
|
+
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  {</div>
|
|
749
|
+
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  orgMain = &func;</div>
|
|
750
|
+
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  mainMod = &mod;</div>
|
|
751
|
+
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  }</div>
|
|
752
|
+
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  }</div>
|
|
753
|
+
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  }</div>
|
|
754
|
+
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  </div>
|
|
755
|
+
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="comment">// Only create svf.main when the original main function is found, and also</span></div>
|
|
756
|
+
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="comment">// there are global constructor or destructor functions.</span></div>
|
|
757
|
+
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <span class="keywordflow">if</span> (orgMain && <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>() > 0 &&</div>
|
|
758
|
+
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  (ctor_funcs.size() > 0 || dtor_funcs.size() > 0))</div>
|
|
759
|
+
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  {</div>
|
|
760
|
+
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  assert(mainMod && <span class="stringliteral">"Module with main function not found."</span>);</div>
|
|
761
|
+
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& M = *mainMod;</div>
|
|
762
|
+
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="comment">// char **</span></div>
|
|
763
|
+
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i8ptr2 = PointerType::getInt8PtrTy(M.getContext())->getPointerTo();</div>
|
|
764
|
+
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* i32 = IntegerType::getInt32Ty(M.getContext());</div>
|
|
765
|
+
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="comment">// define void @svf.main(i32, i8**, i8**)</span></div>
|
|
766
|
+
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span> <span class="preprocessor">#if (LLVM_VERSION_MAJOR >= 9)</span></div>
|
|
767
|
+
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  FunctionCallee svfmainFn = M.getOrInsertFunction(</div>
|
|
768
|
+
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
|
|
769
|
+
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  Type::getVoidTy(M.getContext()),</div>
|
|
770
|
+
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  i32,i8ptr2,i8ptr2</div>
|
|
771
|
+
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  );</div>
|
|
772
|
+
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast<Function>(svfmainFn.getCallee());</div>
|
|
773
|
+
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> <span class="preprocessor">#else</span></div>
|
|
774
|
+
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* svfmain = SVFUtil::dyn_cast<Function>(M.getOrInsertFunction(</div>
|
|
775
|
+
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <a class="code" href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a>,</div>
|
|
776
|
+
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  Type::getVoidTy(M.getContext()),</div>
|
|
777
|
+
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  i32,i8ptr2,i8ptr2</div>
|
|
778
|
+
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  ));</div>
|
|
779
|
+
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> <span class="preprocessor">#endif</span></div>
|
|
780
|
+
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  svfmain->setCallingConv(llvm::CallingConv::C);</div>
|
|
781
|
+
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* block = BasicBlock::Create(M.getContext(), <span class="stringliteral">"entry"</span>, svfmain);</div>
|
|
782
|
+
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <a class="code" href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">IRBuilder</a> Builder(block);</div>
|
|
783
|
+
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="comment">// emit "call void @ctor()". ctor_funcs is sorted so the functions are</span></div>
|
|
784
|
+
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="comment">// emitted in the order of priority</span></div>
|
|
785
|
+
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& ctor : ctor_funcs)</div>
|
|
786
|
+
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  {</div>
|
|
787
|
+
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="keyword">auto</span> target = M.getOrInsertFunction(</div>
|
|
788
|
+
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  ctor->getName(),</div>
|
|
789
|
+
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  Type::getVoidTy(M.getContext())</div>
|
|
790
|
+
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  );</div>
|
|
791
|
+
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  Builder.CreateCall(target);</div>
|
|
792
|
+
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  }</div>
|
|
793
|
+
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="comment">// main() should be called after all ctor functions and before dtor</span></div>
|
|
794
|
+
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="comment">// functions.</span></div>
|
|
795
|
+
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  Function::arg_iterator arg_it = svfmain->arg_begin();</div>
|
|
796
|
+
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* args[] = {arg_it, arg_it + 1, arg_it + 2};</div>
|
|
797
|
+
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordtype">size_t</span> cnt = orgMain->arg_size();</div>
|
|
798
|
+
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  assert(cnt <= 3 && <span class="stringliteral">"Too many arguments for main()"</span>);</div>
|
|
799
|
+
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  Builder.CreateCall(orgMain, llvm::ArrayRef<Value*>(args, args + cnt));</div>
|
|
800
|
+
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="comment">// emit "call void @dtor()". dtor_funcs is sorted so the functions are</span></div>
|
|
801
|
+
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="comment">// emitted in the order of priority</span></div>
|
|
802
|
+
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& dtor : dtor_funcs)</div>
|
|
803
|
+
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  {</div>
|
|
804
|
+
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keyword">auto</span> target = M.getOrInsertFunction(dtor->getName(), Type::getVoidTy(M.getContext()));</div>
|
|
805
|
+
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  Builder.CreateCall(target);</div>
|
|
806
|
+
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  }</div>
|
|
807
|
+
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="comment">// return;</span></div>
|
|
808
|
+
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  Builder.CreateRetVoid();</div>
|
|
809
|
+
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  }</div>
|
|
810
|
+
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span> }</div>
|
|
811
|
+
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  </div>
|
|
812
|
+
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span> <span class="comment">/*</span></div>
|
|
813
|
+
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="comment"> For a more detailed explanation of the Function declaration and definition mapping relationships and how External APIs are handled,</span></div>
|
|
814
|
+
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span> <span class="comment"> please refer to the SVF Wiki: https://github.com/SVF-tools/SVF/wiki/Handling-External-APIs-with-extapi.c</span></div>
|
|
815
|
+
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span> <span class="comment"></span> </div>
|
|
816
|
+
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> <span class="comment"> Table 1</span></div>
|
|
817
|
+
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span> <span class="comment"> | ------- | ----------------- | --------------- | ----------------- | ----------- |</span></div>
|
|
818
|
+
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="comment"> | | AppDef | AppDecl | ExtDef | ExtDecl |</span></div>
|
|
819
|
+
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> <span class="comment"> | ------- | ----------------- | --------------- | ----------------- | ----------- |</span></div>
|
|
820
|
+
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span> <span class="comment"> | AppDef | X | FunDefToDeclsMap| FunDeclToDefMap | X |</span></div>
|
|
821
|
+
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span> <span class="comment"> | ------- | ----------------- | --------------- | ----------------- | ----------- |</span></div>
|
|
822
|
+
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span> <span class="comment"> | AppDecl | FunDeclToDefMap | X | FunDeclToDefMap | X |</span></div>
|
|
823
|
+
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span> <span class="comment"> | ------- | ----------------- | --------------- | ----------------- | ----------- |</span></div>
|
|
824
|
+
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span> <span class="comment"> | ExtDef | FunDefToDeclsMap | FunDefToDeclsMap| X | X |</span></div>
|
|
825
|
+
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span> <span class="comment"> | ------- | ----------------- | --------------- | ----------------- | ----------- |</span></div>
|
|
826
|
+
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <span class="comment"> | ExtDecl | FunDeclToDefMap | X | X | ExtFuncsVec |</span></div>
|
|
827
|
+
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span> <span class="comment"> | ------- | ----------------- | --------------- | ----------------- | ----------- |</span></div>
|
|
828
|
+
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span> <span class="comment"></span> </div>
|
|
829
|
+
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span> <span class="comment"> When a user wants to use functions in extapi.c to overwrite the functions defined in the app code, two relationships, "AppDef -> ExtDef" and "ExtDef -> AppDef," are used.</span></div>
|
|
830
|
+
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span> <span class="comment"> Use Ext function definition to override the App function definition (Ext function with "__attribute__((annotate("OVERWRITE")))" in extapi.c).</span></div>
|
|
831
|
+
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span> <span class="comment"> The app function definition will be changed to an app function declaration.</span></div>
|
|
832
|
+
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span> <span class="comment"> Then, put the app function declaration and its corresponding Ext function definition into FunDeclToDefMap/FunDefToDeclsMap.</span></div>
|
|
833
|
+
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span> <span class="comment"> ------------------------------------------------------</span></div>
|
|
834
|
+
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="comment"> AppDef -> ExtDef (overwrite):</span></div>
|
|
835
|
+
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="comment"> For example,</span></div>
|
|
836
|
+
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span> <span class="comment"> App function:</span></div>
|
|
837
|
+
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="comment"> char* foo(char *a, char *b){return a;}</span></div>
|
|
838
|
+
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="comment"> Ext function:</span></div>
|
|
840
839
|
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span> <span class="comment"> __attribute__((annotate("OVERWRITE")))</span></div>
|
|
841
840
|
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span> <span class="comment"> char* foo(char *a, char *b){return b;}</span></div>
|
|
842
|
-
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="comment">
|
|
843
|
-
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span> <span class="comment">
|
|
844
|
-
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span> <span class="comment">
|
|
845
|
-
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span> <span class="comment">
|
|
846
|
-
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="comment">
|
|
847
|
-
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="comment">
|
|
848
|
-
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span> <span class="comment">
|
|
849
|
-
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span> <span class="comment">
|
|
850
|
-
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span> <span class="comment">
|
|
851
|
-
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span> <span class="comment">
|
|
852
|
-
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="comment">
|
|
853
|
-
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span> <span class="comment"
|
|
854
|
-
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span> <span class="comment">
|
|
855
|
-
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span> <span class="comment">
|
|
856
|
-
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span> <span class="comment">
|
|
857
|
-
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span> <span class="comment">
|
|
858
|
-
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <span class="comment">
|
|
859
|
-
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="comment">
|
|
860
|
-
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span> <span class="comment">
|
|
861
|
-
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span> <span class="comment"></
|
|
862
|
-
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span> <span class="comment">
|
|
863
|
-
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="comment">
|
|
864
|
-
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span> <span class="comment"
|
|
865
|
-
<div class="line"><a name="l00807"></a><span class="lineno"
|
|
866
|
-
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span> 
|
|
867
|
-
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span> 
|
|
868
|
-
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span> 
|
|
869
|
-
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span> 
|
|
870
|
-
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span> 
|
|
871
|
-
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span> 
|
|
872
|
-
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span> 
|
|
873
|
-
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span> 
|
|
874
|
-
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span> 
|
|
875
|
-
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span> 
|
|
876
|
-
<div class="line"><a name="l00818"></a><span class="lineno"
|
|
877
|
-
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span> 
|
|
878
|
-
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span> 
|
|
879
|
-
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span> 
|
|
880
|
-
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span> 
|
|
881
|
-
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span> 
|
|
882
|
-
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span> 
|
|
883
|
-
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span> 
|
|
884
|
-
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span> 
|
|
885
|
-
<div class="line"><a name="
|
|
886
|
-
<div class="line"><a name="
|
|
887
|
-
<div class="line"><a name="
|
|
888
|
-
<div class="line"><a name="
|
|
889
|
-
<div class="line"><a name="
|
|
890
|
-
<div class="line"><a name="
|
|
891
|
-
<div class="line"><a name="
|
|
892
|
-
<div class="line"><a name="
|
|
893
|
-
<div class="line"><a name="
|
|
894
|
-
<div class="line"><a name="
|
|
895
|
-
<div class="line"><a name="
|
|
896
|
-
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span> 
|
|
897
|
-
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span> 
|
|
898
|
-
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <
|
|
899
|
-
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span> 
|
|
900
|
-
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span> 
|
|
901
|
-
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span> 
|
|
902
|
-
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span> 
|
|
903
|
-
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span> 
|
|
904
|
-
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span> 
|
|
905
|
-
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span> 
|
|
906
|
-
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span> 
|
|
907
|
-
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span> 
|
|
908
|
-
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span> 
|
|
909
|
-
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span> 
|
|
910
|
-
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span> 
|
|
911
|
-
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span> 
|
|
912
|
-
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span> 
|
|
913
|
-
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span> 
|
|
914
|
-
<div class="line"><a name="
|
|
915
|
-
<div class="line"><a name="
|
|
916
|
-
<div class="line"><a name="
|
|
917
|
-
<div class="line"><a name="
|
|
918
|
-
<div class="line"><a name="
|
|
919
|
-
<div class="line"><a name="
|
|
920
|
-
<div class="line"><a name="
|
|
921
|
-
<div class="line"><a name="
|
|
922
|
-
<div class="line"><a name="
|
|
923
|
-
<div class="line"><a name="
|
|
924
|
-
<div class="line"><a name="
|
|
925
|
-
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span> 
|
|
926
|
-
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span> 
|
|
927
|
-
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span> 
|
|
928
|
-
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span> 
|
|
929
|
-
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span> 
|
|
930
|
-
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span> 
|
|
931
|
-
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span> 
|
|
932
|
-
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span> 
|
|
933
|
-
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span> 
|
|
934
|
-
<div class="line"><a name="
|
|
935
|
-
<div class="line"><a name="
|
|
936
|
-
<div class="line"><a name="
|
|
937
|
-
<div class="line"><a name="
|
|
938
|
-
<div class="line"><a name="
|
|
939
|
-
<div class="line"><a name="
|
|
940
|
-
<div class="line"><a name="
|
|
941
|
-
<div class="line"><a name="
|
|
942
|
-
<div class="line"><a name="
|
|
841
|
+
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="comment"></span> </div>
|
|
842
|
+
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span> <span class="comment"> When SVF handles the foo function in the App module,</span></div>
|
|
843
|
+
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span> <span class="comment"> the definition of</span></div>
|
|
844
|
+
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span> <span class="comment"> foo: char* foo(char *a, char *b){return a;}</span></div>
|
|
845
|
+
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="comment"> will be changed to a declaration</span></div>
|
|
846
|
+
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="comment"> foo: char* foo(char *a, char *b);</span></div>
|
|
847
|
+
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span> <span class="comment"> Then,</span></div>
|
|
848
|
+
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span> <span class="comment"> foo: char* foo(char *a, char *b);</span></div>
|
|
849
|
+
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span> <span class="comment"> and</span></div>
|
|
850
|
+
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span> <span class="comment"> __attribute__((annotate("OVERWRITE")))</span></div>
|
|
851
|
+
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="comment"> char* foo(char *a, char *b){return b;}</span></div>
|
|
852
|
+
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span> <span class="comment"> will be put into FunDeclToDefMap</span></div>
|
|
853
|
+
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span> <span class="comment"> ------------------------------------------------------</span></div>
|
|
854
|
+
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span> <span class="comment"> ExtDef -> AppDef (overwrite):</span></div>
|
|
855
|
+
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span> <span class="comment"> __attribute__((annotate("OVERWRITE")))</span></div>
|
|
856
|
+
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span> <span class="comment"> char* foo(char *a, char *b){return b;}</span></div>
|
|
857
|
+
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <span class="comment"> and</span></div>
|
|
858
|
+
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="comment"> foo: char* foo(char *a, char *b);</span></div>
|
|
859
|
+
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span> <span class="comment"> are put into FunDefToDeclsMap;</span></div>
|
|
860
|
+
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span> <span class="comment"> ------------------------------------------------------</span></div>
|
|
861
|
+
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span> <span class="comment"> In principle, all functions in extapi.c have bodies (definitions), but some functions (those starting with "sse_")</span></div>
|
|
862
|
+
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="comment"> have only function declarations without definitions. ExtFuncsVec is used to record function declarations starting with "sse_" that are used.</span></div>
|
|
863
|
+
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span> <span class="comment"></span> </div>
|
|
864
|
+
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span> <span class="comment"> ExtDecl -> ExtDecl:</span></div>
|
|
865
|
+
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span> <span class="comment"> For example,</span></div>
|
|
866
|
+
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span> <span class="comment"> App function:</span></div>
|
|
867
|
+
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span> <span class="comment"> foo(){call memcpy();}</span></div>
|
|
868
|
+
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span> <span class="comment"> Ext function:</span></div>
|
|
869
|
+
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span> <span class="comment"> declare sse_check_overflow();</span></div>
|
|
870
|
+
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span> <span class="comment"> memcpy(){sse_check_overflow();}</span></div>
|
|
871
|
+
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span> <span class="comment"></span> </div>
|
|
872
|
+
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span> <span class="comment"> sse_check_overflow() used in the Ext function but not in the App function.</span></div>
|
|
873
|
+
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <span class="comment"> sse_check_overflow should be kept in ExtFuncsVec.</span></div>
|
|
874
|
+
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span> <span class="comment">*/</span></div>
|
|
875
|
+
<div class="line"><a name="l00818"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#ac7c646a78c989807c52263fc35fb3628"> 818</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac7c646a78c989807c52263fc35fb3628">LLVMModuleSet::buildFunToFunMap</a>()</div>
|
|
876
|
+
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span> {</div>
|
|
877
|
+
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*></a> funDecls, funDefs, extFuncs, overwriteExtFuncs;</div>
|
|
878
|
+
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet<string></a> declNames, defNames, intersectNames;</div>
|
|
879
|
+
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<string, const Function*></a> NameToFunDefMapTy;</div>
|
|
880
|
+
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<string, Set<const Function*></a>> NameToFunDeclsMapTy;</div>
|
|
881
|
+
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
|
|
882
|
+
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  {</div>
|
|
883
|
+
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="comment">// extapi.bc functions</span></div>
|
|
884
|
+
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">if</span> (mod.getName().str() == <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-><a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>())</div>
|
|
885
|
+
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  {</div>
|
|
886
|
+
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>& fun : mod.functions())</div>
|
|
887
|
+
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  {</div>
|
|
888
|
+
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="comment">// there is main declaration in ext bc, it should be mapped to</span></div>
|
|
889
|
+
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="comment">// main definition in app bc.</span></div>
|
|
890
|
+
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">"main"</span>)</div>
|
|
891
|
+
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  {</div>
|
|
892
|
+
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  funDecls.insert(&fun);</div>
|
|
893
|
+
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  declNames.insert(fun.getName().str());</div>
|
|
894
|
+
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  }</div>
|
|
895
|
+
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fun.getName().str() == <span class="stringliteral">"svf__main"</span>)</div>
|
|
896
|
+
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  {</div>
|
|
897
|
+
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.push_back(&fun);</div>
|
|
898
|
+
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <span class="comment">// Get all called functions in svf_main()</span></div>
|
|
899
|
+
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  std::vector<const Function*> calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(&fun);</div>
|
|
900
|
+
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), calledFunctions.begin(), calledFunctions.end());</div>
|
|
901
|
+
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  }</div>
|
|
902
|
+
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keywordflow">else</span></div>
|
|
903
|
+
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  {</div>
|
|
904
|
+
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  extFuncs.insert(&fun);</div>
|
|
905
|
+
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="comment">// Find overwrite functions in extapi.bc</span></div>
|
|
906
|
+
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  std::vector<std::string> annotations =</div>
|
|
907
|
+
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">LLVMUtil::getFunAnnotations</a>(&fun);</div>
|
|
908
|
+
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <span class="keyword">auto</span> it =</div>
|
|
909
|
+
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  std::find_if(annotations.begin(), annotations.end(),</div>
|
|
910
|
+
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  [&](<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& annotation)</div>
|
|
911
|
+
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  {</div>
|
|
912
|
+
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  return annotation.find(<span class="stringliteral">"OVERWRITE"</span>) !=</div>
|
|
913
|
+
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  std::string::npos;</div>
|
|
914
|
+
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  });</div>
|
|
915
|
+
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <span class="keywordflow">if</span> (it != annotations.end())</div>
|
|
916
|
+
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  {</div>
|
|
917
|
+
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  overwriteExtFuncs.insert(&fun);</div>
|
|
918
|
+
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  }</div>
|
|
919
|
+
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  }</div>
|
|
920
|
+
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  }</div>
|
|
921
|
+
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  }</div>
|
|
922
|
+
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <span class="keywordflow">else</span></div>
|
|
923
|
+
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  {</div>
|
|
924
|
+
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>& fun : mod.functions())</div>
|
|
925
|
+
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  {</div>
|
|
926
|
+
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordflow">if</span> (fun.isDeclaration())</div>
|
|
927
|
+
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  {</div>
|
|
928
|
+
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  funDecls.insert(&fun);</div>
|
|
929
|
+
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  declNames.insert(fun.getName().str());</div>
|
|
930
|
+
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  }</div>
|
|
931
|
+
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="keywordflow">else</span></div>
|
|
932
|
+
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  {</div>
|
|
933
|
+
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  funDefs.insert(&fun);</div>
|
|
934
|
+
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  defNames.insert(fun.getName().str());</div>
|
|
935
|
+
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  }</div>
|
|
936
|
+
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  }</div>
|
|
937
|
+
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  }</div>
|
|
938
|
+
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  }</div>
|
|
939
|
+
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="comment">// Find the intersectNames</span></div>
|
|
940
|
+
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  std::set_intersection(</div>
|
|
941
|
+
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  declNames.begin(), declNames.end(), defNames.begin(), defNames.end(),</div>
|
|
942
|
+
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  std::inserter(intersectNames, intersectNames.end()));</div>
|
|
943
943
|
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  </div>
|
|
944
|
-
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span> 
|
|
945
|
-
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>*
|
|
944
|
+
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  NameToFunDefMapTy nameToFunDefMap;</div>
|
|
945
|
+
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
|
|
946
946
|
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  {</div>
|
|
947
|
-
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="keywordtype">string</span> funName =
|
|
947
|
+
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="keywordtype">string</span> funName = fdef->getName().str();</div>
|
|
948
948
|
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
|
|
949
949
|
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  {</div>
|
|
950
|
-
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <
|
|
951
|
-
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span> 
|
|
952
|
-
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span> 
|
|
953
|
-
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span> 
|
|
954
|
-
<div class="line"><a name="
|
|
955
|
-
<div class="line"><a name="
|
|
956
|
-
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span> 
|
|
957
|
-
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span> 
|
|
958
|
-
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="
|
|
959
|
-
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span> 
|
|
960
|
-
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span> 
|
|
961
|
-
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span> 
|
|
962
|
-
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span> 
|
|
963
|
-
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span> 
|
|
964
|
-
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span> 
|
|
965
|
-
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span> 
|
|
966
|
-
<div class="line"><a name="
|
|
967
|
-
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span> 
|
|
968
|
-
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span> 
|
|
969
|
-
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span> 
|
|
970
|
-
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keywordflow">if</span> (intersectNames.find(funName)
|
|
971
|
-
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span> 
|
|
972
|
-
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span> 
|
|
973
|
-
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span> 
|
|
974
|
-
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span> 
|
|
975
|
-
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span> 
|
|
976
|
-
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span> 
|
|
977
|
-
<div class="line"><a name="
|
|
978
|
-
<div class="line"><a name="
|
|
979
|
-
<div class="line"><a name="
|
|
980
|
-
<div class="line"><a name="
|
|
981
|
-
<div class="line"><a name="
|
|
982
|
-
<div class="line"><a name="
|
|
983
|
-
<div class="line"><a name="
|
|
984
|
-
<div class="line"><a name="
|
|
985
|
-
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  }</div>
|
|
950
|
+
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  nameToFunDefMap.emplace(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName), fdef);</div>
|
|
951
|
+
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  }</div>
|
|
952
|
+
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  }</div>
|
|
953
|
+
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  </div>
|
|
954
|
+
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  NameToFunDeclsMapTy nameToFunDeclsMap;</div>
|
|
955
|
+
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
|
|
956
|
+
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  {</div>
|
|
957
|
+
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keywordtype">string</span> funName = fdecl->getName().str();</div>
|
|
958
|
+
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end())</div>
|
|
959
|
+
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  {</div>
|
|
960
|
+
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="comment">// pair with key funName will be created automatically if it does</span></div>
|
|
961
|
+
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="comment">// not exist</span></div>
|
|
962
|
+
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  nameToFunDeclsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(funName)].insert(fdecl);</div>
|
|
963
|
+
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  }</div>
|
|
964
|
+
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  }</div>
|
|
965
|
+
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  </div>
|
|
966
|
+
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
|
|
967
|
+
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  {</div>
|
|
968
|
+
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <span class="keywordtype">string</span> funName = fdecl->getName().str();</div>
|
|
969
|
+
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  NameToFunDefMapTy::iterator mit;</div>
|
|
970
|
+
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) != intersectNames.end() &&</div>
|
|
971
|
+
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  (mit = nameToFunDefMap.find(funName)) != nameToFunDefMap.end())</div>
|
|
972
|
+
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  {</div>
|
|
973
|
+
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = mit->second;</div>
|
|
974
|
+
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  }</div>
|
|
975
|
+
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  }</div>
|
|
976
|
+
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  </div>
|
|
977
|
+
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdef : funDefs)</div>
|
|
978
|
+
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  {</div>
|
|
979
|
+
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordtype">string</span> funName = fdef->getName().str();</div>
|
|
980
|
+
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <span class="keywordflow">if</span> (intersectNames.find(funName) == intersectNames.end())</div>
|
|
981
|
+
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keywordflow">continue</span>;</div>
|
|
982
|
+
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  NameToFunDeclsMapTy::iterator mit = nameToFunDeclsMap.find(funName);</div>
|
|
983
|
+
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">if</span> (mit == nameToFunDeclsMap.end())</div>
|
|
984
|
+
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <span class="keywordflow">continue</span>;</div>
|
|
986
985
|
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  </div>
|
|
987
|
-
<div class="line"><a name="
|
|
988
|
-
<div class="line"><a name="
|
|
989
|
-
<div class="line"><a name="
|
|
990
|
-
<div class="line"><a name="
|
|
991
|
-
<div class="line"><a name="
|
|
992
|
-
<div class="line"><a name="
|
|
993
|
-
<div class="line"><a name="
|
|
994
|
-
<div class="line"><a name="
|
|
995
|
-
<div class="line"><a name="
|
|
996
|
-
<div class="line"><a name="
|
|
997
|
-
<div class="line"><a name="
|
|
998
|
-
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span> 
|
|
999
|
-
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span> 
|
|
1000
|
-
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span> 
|
|
1001
|
-
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span> 
|
|
1002
|
-
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span> 
|
|
1003
|
-
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span> 
|
|
1004
|
-
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span> 
|
|
1005
|
-
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span> 
|
|
1006
|
-
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span> 
|
|
1007
|
-
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span> 
|
|
1008
|
-
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  </div>
|
|
1009
|
-
<div class="line"><a name="
|
|
1010
|
-
<div class="line"><a name="
|
|
1011
|
-
<div class="line"><a name="
|
|
1012
|
-
<div class="line"><a name="
|
|
1013
|
-
<div class="line"><a name="
|
|
1014
|
-
<div class="line"><a name="
|
|
1015
|
-
<div class="line"><a name="
|
|
1016
|
-
<div class="line"><a name="
|
|
1017
|
-
<div class="line"><a name="
|
|
1018
|
-
<div class="line"><a name="
|
|
1019
|
-
<div class="line"><a name="
|
|
1020
|
-
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span> 
|
|
1021
|
-
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span> 
|
|
1022
|
-
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span> 
|
|
1023
|
-
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span> 
|
|
1024
|
-
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span> 
|
|
1025
|
-
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span> 
|
|
1026
|
-
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <
|
|
1027
|
-
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span> 
|
|
1028
|
-
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span> 
|
|
1029
|
-
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  <
|
|
1030
|
-
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  <span class="comment">//
|
|
1031
|
-
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span> 
|
|
1032
|
-
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span> 
|
|
1033
|
-
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span> 
|
|
1034
|
-
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span> 
|
|
1035
|
-
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span> 
|
|
1036
|
-
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span> 
|
|
1037
|
-
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  </div>
|
|
1038
|
-
<div class="line"><a name="l00989"></a><span class="lineno"
|
|
1039
|
-
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span> 
|
|
1040
|
-
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span> 
|
|
1041
|
-
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span> 
|
|
1042
|
-
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span> 
|
|
1043
|
-
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span> 
|
|
1044
|
-
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span> 
|
|
1045
|
-
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span> 
|
|
1046
|
-
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span> 
|
|
1047
|
-
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span> 
|
|
1048
|
-
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span> 
|
|
1049
|
-
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> 
|
|
1050
|
-
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> 
|
|
1051
|
-
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> 
|
|
1052
|
-
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> 
|
|
1053
|
-
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> 
|
|
1054
|
-
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> 
|
|
1055
|
-
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  </div>
|
|
1056
|
-
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> 
|
|
1057
|
-
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> 
|
|
1058
|
-
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> 
|
|
1059
|
-
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  </div>
|
|
1060
|
-
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> 
|
|
1061
|
-
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> 
|
|
1062
|
-
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> 
|
|
1063
|
-
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> 
|
|
1064
|
-
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> 
|
|
1065
|
-
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> 
|
|
1066
|
-
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> 
|
|
1067
|
-
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> 
|
|
1068
|
-
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> 
|
|
1069
|
-
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> 
|
|
1070
|
-
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> 
|
|
1071
|
-
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> 
|
|
1072
|
-
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> 
|
|
1073
|
-
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> 
|
|
986
|
+
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  std::vector<const Function*>& decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[fdef];</div>
|
|
987
|
+
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& declsSet = mit->second;</div>
|
|
988
|
+
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="comment">// Reserve space for decls to avoid more than 1 reallocation</span></div>
|
|
989
|
+
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  decls.reserve(decls.size() + declsSet.size());</div>
|
|
990
|
+
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  </div>
|
|
991
|
+
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* decl : declsSet)</div>
|
|
992
|
+
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  {</div>
|
|
993
|
+
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  decls.push_back(decl);</div>
|
|
994
|
+
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  }</div>
|
|
995
|
+
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  }</div>
|
|
996
|
+
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  </div>
|
|
997
|
+
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fdecl : funDecls)</div>
|
|
998
|
+
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  {</div>
|
|
999
|
+
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* extfun : extFuncs)</div>
|
|
1000
|
+
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  {</div>
|
|
1001
|
+
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> declName = fdecl->getName().str();</div>
|
|
1002
|
+
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="comment">// Since C function names cannot include '.', change the function name from llvm.memcpy.p0i8.p0i8.i64 to llvm_memcpy_p0i8_p0i8_i64."</span></div>
|
|
1003
|
+
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  std::replace(declName.begin(), declName.end(), <span class="charliteral">'.'</span>, <span class="charliteral">'_'</span>);</div>
|
|
1004
|
+
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keywordflow">if</span> (extfun->getName().str().compare(declName) == 0)</div>
|
|
1005
|
+
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  {</div>
|
|
1006
|
+
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <span class="comment">// AppDecl -> ExtDef in Table 1</span></div>
|
|
1007
|
+
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[fdecl] = extfun;</div>
|
|
1008
|
+
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="comment">// ExtDef -> AppDecl in Table 1</span></div>
|
|
1009
|
+
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  std::vector<const Function*>& decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[extfun];</div>
|
|
1010
|
+
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  decls.push_back(fdecl);</div>
|
|
1011
|
+
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="comment">// Keep all called functions in extfun</span></div>
|
|
1012
|
+
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="comment">// ExtDecl -> ExtDecl in Table 1</span></div>
|
|
1013
|
+
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  std::vector<const Function*> calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(extfun);</div>
|
|
1014
|
+
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), calledFunctions.begin(), calledFunctions.end());</div>
|
|
1015
|
+
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  }</div>
|
|
1016
|
+
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  }</div>
|
|
1017
|
+
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  }</div>
|
|
1018
|
+
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  </div>
|
|
1019
|
+
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* appfunc : funDefs)</div>
|
|
1020
|
+
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  {</div>
|
|
1021
|
+
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* owfunc : overwriteExtFuncs)</div>
|
|
1022
|
+
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  {</div>
|
|
1023
|
+
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <span class="keywordflow">if</span> (appfunc->getName().str().compare(owfunc->getName().str()) == 0)</div>
|
|
1024
|
+
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  {</div>
|
|
1025
|
+
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>*<span class="keyword">></span>(appfunc);</div>
|
|
1026
|
+
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = fun->getParent();</div>
|
|
1027
|
+
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* funType = fun->getFunctionType();</div>
|
|
1028
|
+
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName = fun->getName().str();</div>
|
|
1029
|
+
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  <span class="comment">// Replace app function definition with declaration</span></div>
|
|
1030
|
+
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* declaration = Function::Create(funType, GlobalValue::ExternalLinkage, funName, mod);</div>
|
|
1031
|
+
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  fun->replaceAllUsesWith(declaration);</div>
|
|
1032
|
+
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  fun->eraseFromParent();</div>
|
|
1033
|
+
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  declaration->setName(funName);</div>
|
|
1034
|
+
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  <span class="comment">// AppDef -> ExtDef in Table 1, AppDef has been changed to AppDecl</span></div>
|
|
1035
|
+
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">FunDeclToDefMap</a>[declaration] = owfunc;</div>
|
|
1036
|
+
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="comment">// ExtDef -> AppDef in Table 1</span></div>
|
|
1037
|
+
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  std::vector<const Function*>& decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a377cefaad4b688ab6edf94ba4abe00ee">FunDefToDeclsMap</a>[owfunc];</div>
|
|
1038
|
+
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  decls.push_back(declaration);</div>
|
|
1039
|
+
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="comment">// Keep all called functions in owfunc</span></div>
|
|
1040
|
+
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="comment">// ExtDecl -> ExtDecl in Table 1</span></div>
|
|
1041
|
+
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  std::vector<const Function*> calledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(owfunc);</div>
|
|
1042
|
+
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.insert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">ExtFuncsVec</a>.end(), calledFunctions.begin(), calledFunctions.end());</div>
|
|
1043
|
+
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  }</div>
|
|
1044
|
+
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  }</div>
|
|
1045
|
+
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  }</div>
|
|
1046
|
+
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span> }</div>
|
|
1047
|
+
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  </div>
|
|
1048
|
+
<div class="line"><a name="l01000"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#aaab03cb6ff665bc008c67b866ba81e47"> 1000</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#aaab03cb6ff665bc008c67b866ba81e47">LLVMModuleSet::buildGlobalDefToRepMap</a>()</div>
|
|
1049
|
+
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> {</div>
|
|
1050
|
+
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<string, Set<GlobalVariable*></a>> NameToGlobalsMapTy;</div>
|
|
1051
|
+
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  NameToGlobalsMapTy nameToGlobalsMap;</div>
|
|
1052
|
+
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> &mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
|
|
1053
|
+
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  {</div>
|
|
1054
|
+
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <span class="comment">// Collect ctor and dtor functions</span></div>
|
|
1055
|
+
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>& global : mod.globals())</div>
|
|
1056
|
+
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  {</div>
|
|
1057
|
+
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordflow">if</span> (global.hasPrivateLinkage())</div>
|
|
1058
|
+
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="keywordflow">continue</span>;</div>
|
|
1059
|
+
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  <span class="keywordtype">string</span> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> = global.getName().str();</div>
|
|
1060
|
+
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>.empty())</div>
|
|
1061
|
+
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="keywordflow">continue</span>;</div>
|
|
1062
|
+
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  nameToGlobalsMap[<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)].insert(&global);</div>
|
|
1063
|
+
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  }</div>
|
|
1064
|
+
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  }</div>
|
|
1065
|
+
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  </div>
|
|
1066
|
+
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& pair : nameToGlobalsMap)</div>
|
|
1067
|
+
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  {</div>
|
|
1068
|
+
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<GlobalVariable*></a> &globals = pair.second;</div>
|
|
1069
|
+
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  </div>
|
|
1070
|
+
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  <span class="keyword">const</span> <span class="keyword">auto</span> repIt =</div>
|
|
1071
|
+
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  std::find_if(globals.begin(), globals.end(),</div>
|
|
1072
|
+
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  [](<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* g)</div>
|
|
1074
1073
|
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  {</div>
|
|
1075
|
-
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> 
|
|
1076
|
-
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  }
|
|
1077
|
-
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> 
|
|
1078
|
-
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> 
|
|
1079
|
-
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  </div>
|
|
1080
|
-
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> 
|
|
1081
|
-
<div class="line"><a name="l01032"></a><span class="lineno"
|
|
1082
|
-
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> 
|
|
1083
|
-
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> 
|
|
1084
|
-
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> 
|
|
1085
|
-
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> 
|
|
1086
|
-
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> 
|
|
1087
|
-
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> 
|
|
1088
|
-
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> 
|
|
1089
|
-
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> 
|
|
1090
|
-
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> 
|
|
1091
|
-
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> 
|
|
1092
|
-
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  </div>
|
|
1093
|
-
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> 
|
|
1094
|
-
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> 
|
|
1095
|
-
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> 
|
|
1096
|
-
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> 
|
|
1097
|
-
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> 
|
|
1098
|
-
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> 
|
|
1099
|
-
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> 
|
|
1100
|
-
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> 
|
|
1101
|
-
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  </div>
|
|
1102
|
-
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> 
|
|
1103
|
-
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> 
|
|
1104
|
-
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> 
|
|
1105
|
-
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  </div>
|
|
1106
|
-
<div class="line"><a name="l01057"></a><span class="lineno"
|
|
1107
|
-
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> 
|
|
1108
|
-
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> 
|
|
1109
|
-
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> 
|
|
1110
|
-
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> 
|
|
1111
|
-
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> 
|
|
1112
|
-
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> 
|
|
1113
|
-
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> 
|
|
1114
|
-
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> 
|
|
1115
|
-
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> 
|
|
1116
|
-
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> 
|
|
1117
|
-
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> 
|
|
1118
|
-
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> 
|
|
1119
|
-
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> 
|
|
1120
|
-
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> 
|
|
1121
|
-
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <span class="keywordflow">if</span> (<a class="code" href="
|
|
1122
|
-
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> 
|
|
1123
|
-
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> 
|
|
1124
|
-
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> 
|
|
1125
|
-
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> 
|
|
1126
|
-
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> 
|
|
1127
|
-
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> 
|
|
1128
|
-
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  </div>
|
|
1129
|
-
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> 
|
|
1130
|
-
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> 
|
|
1131
|
-
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> 
|
|
1132
|
-
<div class="line"><a name="l01083"></a><span class="lineno"
|
|
1133
|
-
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> {</div>
|
|
1134
|
-
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> 
|
|
1135
|
-
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> 
|
|
1136
|
-
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> 
|
|
1137
|
-
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> 
|
|
1138
|
-
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> 
|
|
1139
|
-
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> 
|
|
1140
|
-
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <
|
|
1141
|
-
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> 
|
|
1142
|
-
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> 
|
|
1143
|
-
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> 
|
|
1144
|
-
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> 
|
|
1145
|
-
<div class="line"><a name="
|
|
1146
|
-
<div class="line"><a name="
|
|
1147
|
-
<div class="line"><a name="
|
|
1148
|
-
<div class="line"><a name="
|
|
1149
|
-
<div class="line"><a name="
|
|
1150
|
-
<div class="line"><a name="
|
|
1151
|
-
<div class="line"><a name="
|
|
1152
|
-
<div class="line"><a name="
|
|
1153
|
-
<div class="line"><a name="
|
|
1154
|
-
<div class="line"><a name="
|
|
1155
|
-
<div class="line"><a name="
|
|
1156
|
-
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  <span class="keywordflow">if</span>(
|
|
1157
|
-
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> 
|
|
1158
|
-
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> 
|
|
1159
|
-
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> 
|
|
1160
|
-
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> 
|
|
1161
|
-
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> 
|
|
1162
|
-
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> 
|
|
1163
|
-
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> 
|
|
1164
|
-
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span> 
|
|
1165
|
-
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> 
|
|
1166
|
-
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> 
|
|
1167
|
-
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span> 
|
|
1168
|
-
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> 
|
|
1169
|
-
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  </div>
|
|
1170
|
-
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span> 
|
|
1171
|
-
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <
|
|
1172
|
-
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span> 
|
|
1173
|
-
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> 
|
|
1174
|
-
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span> 
|
|
1175
|
-
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  </div>
|
|
1176
|
-
<div class="line"><a name="l01130"></a><span class="lineno"
|
|
1177
|
-
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> 
|
|
1178
|
-
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span> 
|
|
1179
|
-
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span> 
|
|
1180
|
-
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> 
|
|
1181
|
-
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <
|
|
1182
|
-
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span> 
|
|
1183
|
-
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span> 
|
|
1184
|
-
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span> 
|
|
1185
|
-
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> 
|
|
1186
|
-
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> 
|
|
1187
|
-
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> 
|
|
1188
|
-
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> 
|
|
1189
|
-
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span> 
|
|
1190
|
-
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> 
|
|
1191
|
-
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> 
|
|
1192
|
-
<div class="line"><a name="l01146"></a><span class="lineno"
|
|
1193
|
-
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> 
|
|
1194
|
-
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> 
|
|
1195
|
-
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> 
|
|
1196
|
-
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span> 
|
|
1197
|
-
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  <
|
|
1198
|
-
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> 
|
|
1199
|
-
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> 
|
|
1200
|
-
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> 
|
|
1201
|
-
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> 
|
|
1202
|
-
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> 
|
|
1203
|
-
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span> 
|
|
1204
|
-
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> 
|
|
1205
|
-
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> 
|
|
1206
|
-
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> 
|
|
1207
|
-
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> 
|
|
1208
|
-
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> 
|
|
1209
|
-
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> }</div>
|
|
1210
|
-
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  </div>
|
|
1211
|
-
<div class="line"><a name="l01165"></a><span class="lineno"
|
|
1212
|
-
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> 
|
|
1213
|
-
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> 
|
|
1214
|
-
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> 
|
|
1215
|
-
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> 
|
|
1216
|
-
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <
|
|
1217
|
-
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> 
|
|
1218
|
-
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <span class="keywordflow">return</span>
|
|
1219
|
-
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> 
|
|
1220
|
-
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> 
|
|
1221
|
-
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span> 
|
|
1222
|
-
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span> 
|
|
1223
|
-
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> 
|
|
1224
|
-
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> 
|
|
1225
|
-
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <span class="keywordflow">
|
|
1226
|
-
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span> 
|
|
1227
|
-
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keywordflow">
|
|
1228
|
-
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> 
|
|
1229
|
-
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span> 
|
|
1230
|
-
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  <span class="keywordflow">else</span
|
|
1231
|
-
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#
|
|
1232
|
-
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span> 
|
|
1233
|
-
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span> 
|
|
1234
|
-
<div class="line"><a name="l01188"></a><span class="lineno"
|
|
1235
|
-
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> 
|
|
1236
|
-
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> 
|
|
1237
|
-
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> 
|
|
1238
|
-
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  <span class="keywordflow">
|
|
1239
|
-
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  <span class="keywordflow">return</span>
|
|
1074
|
+
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  return g->hasInitializer();</div>
|
|
1075
|
+
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  });</div>
|
|
1076
|
+
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* rep =</div>
|
|
1077
|
+
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  repIt != globals.end()</div>
|
|
1078
|
+
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  ? *repIt</div>
|
|
1079
|
+
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="comment">// When there is no initializer, just pick the first one.</span></div>
|
|
1080
|
+
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  : (assert(!globals.empty() && <span class="stringliteral">"Empty global set"</span>),</div>
|
|
1081
|
+
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  *globals.begin());</div>
|
|
1082
|
+
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  </div>
|
|
1083
|
+
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* cur : globals)</div>
|
|
1084
|
+
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  {</div>
|
|
1085
|
+
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae2a1fa0b908cf372c50af90e62c4bf2b">GlobalDefToRepMap</a>[cur] = rep;</div>
|
|
1086
|
+
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  }</div>
|
|
1087
|
+
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  }</div>
|
|
1088
|
+
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> }</div>
|
|
1089
|
+
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  </div>
|
|
1090
|
+
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> <span class="comment">// Dump modules to files</span></div>
|
|
1091
|
+
<div class="line"><a name="l01043"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c"> 1043</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">LLVMModuleSet::dumpModulesToFile</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& suffix)</div>
|
|
1092
|
+
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> {</div>
|
|
1093
|
+
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& mod : <a class="code" href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">modules</a>)</div>
|
|
1094
|
+
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  {</div>
|
|
1095
|
+
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> moduleName = mod.getName().str();</div>
|
|
1096
|
+
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> OutputFilename;</div>
|
|
1097
|
+
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  std::size_t pos = moduleName.rfind(<span class="charliteral">'.'</span>);</div>
|
|
1098
|
+
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <span class="keywordflow">if</span> (pos != std::string::npos)</div>
|
|
1099
|
+
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  OutputFilename = moduleName.substr(0, pos) + suffix;</div>
|
|
1100
|
+
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <span class="keywordflow">else</span></div>
|
|
1101
|
+
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  OutputFilename = moduleName + suffix;</div>
|
|
1102
|
+
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  </div>
|
|
1103
|
+
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  std::error_code EC;</div>
|
|
1104
|
+
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <a class="code" href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">raw_fd_ostream</a> OS(OutputFilename.c_str(), EC, llvm::sys::fs::OF_None);</div>
|
|
1105
|
+
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  </div>
|
|
1106
|
+
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> <span class="preprocessor">#if (LLVM_VERSION_MAJOR >= 7)</span></div>
|
|
1107
|
+
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  WriteBitcodeToFile(mod, OS);</div>
|
|
1108
|
+
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <span class="preprocessor">#else</span></div>
|
|
1109
|
+
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  WriteBitcodeToFile(&mod, OS);</div>
|
|
1110
|
+
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> <span class="preprocessor">#endif</span></div>
|
|
1111
|
+
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  </div>
|
|
1112
|
+
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  OS.flush();</div>
|
|
1113
|
+
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  }</div>
|
|
1114
|
+
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> }</div>
|
|
1115
|
+
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  </div>
|
|
1116
|
+
<div class="line"><a name="l01068"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a"> 1068</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">LLVMModuleSet::setValueAttr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val, <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfvalue)</div>
|
|
1117
|
+
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> {</div>
|
|
1118
|
+
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVFValue2LLVMValue</a>[svfvalue] = val;</div>
|
|
1119
|
+
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  </div>
|
|
1120
|
+
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">LLVMUtil::isPtrInUncalledFunction</a>(val))</div>
|
|
1121
|
+
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  svfvalue-><a class="code" href="classSVF_1_1SVFValue.html#ac2e5c42d0ac92375c88ef5b3f1b65dc4">setPtrInUncalledFunction</a>();</div>
|
|
1122
|
+
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
|
|
1123
|
+
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  svfvalue-><a class="code" href="classSVF_1_1SVFValue.html#afe1de41ca3215b325d0ca61814c6bd6b">setConstDataOrAggData</a>();</div>
|
|
1124
|
+
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  </div>
|
|
1125
|
+
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFGlobalValue.html">SVFGlobalValue</a>* glob = SVFUtil::dyn_cast<SVFGlobalValue>(svfvalue))</div>
|
|
1126
|
+
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  {</div>
|
|
1127
|
+
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* llvmVal = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">LLVMUtil::getGlobalRep</a>(val);</div>
|
|
1128
|
+
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  assert(SVFUtil::isa<GlobalValue>(llvmVal) && <span class="stringliteral">"not a GlobalValue?"</span>);</div>
|
|
1129
|
+
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  glob->setDefGlobalForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(SVFUtil::cast<GlobalValue>(llvmVal)));</div>
|
|
1130
|
+
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  }</div>
|
|
1131
|
+
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = SVFUtil::dyn_cast<SVFFunction>(svfvalue))</div>
|
|
1132
|
+
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  {</div>
|
|
1133
|
+
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::cast<Function>(val);</div>
|
|
1134
|
+
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  svffun->setIsNotRet(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">LLVMUtil::functionDoesNotRet</a>(func));</div>
|
|
1135
|
+
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  svffun->setIsUncalledFunction(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">LLVMUtil::isUncalledFunction</a>(func));</div>
|
|
1136
|
+
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  svffun->setDefFunForMultipleModule(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">LLVMUtil::getDefFunForMultipleModule</a>(func)));</div>
|
|
1137
|
+
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  }</div>
|
|
1138
|
+
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  </div>
|
|
1139
|
+
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  svfvalue-><a class="code" href="classSVF_1_1SVFValue.html#a588acec1904d440797ca4500f63f7d28">setSourceLoc</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(val));</div>
|
|
1140
|
+
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> }</div>
|
|
1141
|
+
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  </div>
|
|
1142
|
+
<div class="line"><a name="l01094"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727"> 1094</a></span> <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">LLVMModuleSet::getSVFConstantData</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* cd)</div>
|
|
1143
|
+
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> {</div>
|
|
1144
|
+
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(cd);</div>
|
|
1145
|
+
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
|
|
1146
|
+
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  {</div>
|
|
1147
|
+
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  assert(SVFUtil::isa<SVFConstantData>(it->second) && <span class="stringliteral">"not a SVFConstantData type!"</span>);</div>
|
|
1148
|
+
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="keywordflow">return</span> SVFUtil::cast<SVFConstantData>(it->second);</div>
|
|
1149
|
+
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  }</div>
|
|
1150
|
+
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="keywordflow">else</span></div>
|
|
1151
|
+
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  {</div>
|
|
1152
|
+
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>* svfcd = <span class="keyword">nullptr</span>;</div>
|
|
1153
|
+
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* cint = SVFUtil::dyn_cast<ConstantInt>(cd))</div>
|
|
1154
|
+
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  {</div>
|
|
1155
|
+
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  <span class="keywordflow">if</span>(cint->getBitWidth() == 1)</div>
|
|
1156
|
+
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint->getType()), cint->getZExtValue(), cint->getZExtValue());</div>
|
|
1157
|
+
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cint->getBitWidth() <= 64 && cint->getBitWidth() > 1)</div>
|
|
1158
|
+
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint->getType()), cint->getZExtValue(), cint->getSExtValue());</div>
|
|
1159
|
+
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <span class="keywordflow">else</span></div>
|
|
1160
|
+
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cint->getType()), 0, 0);</div>
|
|
1161
|
+
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  }</div>
|
|
1162
|
+
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad49e4222ba46d9490b87a80df8b46800">ConstantFP</a>* cfp = SVFUtil::dyn_cast<ConstantFP>(cd))</div>
|
|
1163
|
+
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  {</div>
|
|
1164
|
+
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <span class="keywordtype">double</span> dval = 0;</div>
|
|
1165
|
+
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <span class="comment">// TODO: Why only double is considered? What about float?</span></div>
|
|
1166
|
+
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  <span class="keywordflow">if</span>(cfp->isNormalFP() && (&cfp->getValueAPF().getSemantics()== &llvm::APFloatBase::IEEEdouble()))</div>
|
|
1167
|
+
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  dval = cfp->getValueAPF().convertToDouble();</div>
|
|
1168
|
+
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantFP.html">SVFConstantFP</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd->getType()), dval);</div>
|
|
1169
|
+
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  }</div>
|
|
1170
|
+
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<ConstantPointerNull>(cd))</div>
|
|
1171
|
+
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantNullPtr.html">SVFConstantNullPtr</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd->getType()));</div>
|
|
1172
|
+
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<UndefValue>(cd))</div>
|
|
1173
|
+
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFBlackHoleValue.html">SVFBlackHoleValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd->getType()));</div>
|
|
1174
|
+
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  <span class="keywordflow">else</span></div>
|
|
1175
|
+
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  svfcd = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstantData.html">SVFConstantData</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(cd->getType()));</div>
|
|
1176
|
+
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  </div>
|
|
1177
|
+
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <span class="keywordflow">if</span> (cd->hasName())</div>
|
|
1178
|
+
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  svfcd-><a class="code" href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">setName</a>(cd->getName().str());</div>
|
|
1179
|
+
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  </div>
|
|
1180
|
+
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-><a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfcd);</div>
|
|
1181
|
+
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#af4bd487b3b6efe55bf869b869f5e8a80">addConstantDataMap</a>(cd,svfcd);</div>
|
|
1182
|
+
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <span class="keywordflow">return</span> svfcd;</div>
|
|
1183
|
+
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  }</div>
|
|
1184
|
+
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> }</div>
|
|
1185
|
+
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  </div>
|
|
1186
|
+
<div class="line"><a name="l01141"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc"> 1141</a></span> <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">LLVMModuleSet::getOtherSVFConstant</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* oc)</div>
|
|
1187
|
+
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> {</div>
|
|
1188
|
+
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  LLVMConst2SVFConstMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.find(oc);</div>
|
|
1189
|
+
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">LLVMConst2SVFConst</a>.end())</div>
|
|
1190
|
+
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  {</div>
|
|
1191
|
+
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  <span class="keywordflow">return</span> it->second;</div>
|
|
1192
|
+
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  }</div>
|
|
1193
|
+
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  <span class="keywordflow">else</span></div>
|
|
1194
|
+
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  {</div>
|
|
1195
|
+
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>* svfoc = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFConstant.html">SVFConstant</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(oc->getType()));</div>
|
|
1196
|
+
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-><a class="code" href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">addConstant</a>(svfoc);</div>
|
|
1197
|
+
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5badf03aeb1ebda02bc186bbb58a892a">addOtherConstantMap</a>(oc,svfoc);</div>
|
|
1198
|
+
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  <span class="keywordflow">return</span> svfoc;</div>
|
|
1199
|
+
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  }</div>
|
|
1200
|
+
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> }</div>
|
|
1201
|
+
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  </div>
|
|
1202
|
+
<div class="line"><a name="l01157"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965"> 1157</a></span> <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">LLVMModuleSet::getSVFOtherValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* ov)</div>
|
|
1203
|
+
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> {</div>
|
|
1204
|
+
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  LLVMValue2SVFOtherValueMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.find(ov);</div>
|
|
1205
|
+
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">LLVMValue2SVFOtherValue</a>.end())</div>
|
|
1206
|
+
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  {</div>
|
|
1207
|
+
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  <span class="keywordflow">return</span> it->second;</div>
|
|
1208
|
+
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  }</div>
|
|
1209
|
+
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  <span class="keywordflow">else</span></div>
|
|
1210
|
+
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  {</div>
|
|
1211
|
+
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>* svfov =</div>
|
|
1212
|
+
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  SVFUtil::isa<MetadataAsValue>(ov)</div>
|
|
1213
|
+
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  ? <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFMetadataAsValue.html">SVFMetadataAsValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov->getType()))</div>
|
|
1214
|
+
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  : <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherValue.html">SVFOtherValue</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ov->getType()));</div>
|
|
1215
|
+
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">svfModule</a>-><a class="code" href="classSVF_1_1SVFModule.html#a48d7f0643bb228701dcabb88ef541fca">addOtherValue</a>(svfov);</div>
|
|
1216
|
+
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">addOtherValueMap</a>(ov,svfov);</div>
|
|
1217
|
+
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <span class="keywordflow">return</span> svfov;</div>
|
|
1218
|
+
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  }</div>
|
|
1219
|
+
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> }</div>
|
|
1220
|
+
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  </div>
|
|
1221
|
+
<div class="line"><a name="l01176"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392"> 1176</a></span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">LLVMModuleSet::getSVFValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value)</div>
|
|
1222
|
+
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> {</div>
|
|
1223
|
+
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = SVFUtil::dyn_cast<Function>(value))</div>
|
|
1224
|
+
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
|
|
1225
|
+
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</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>(value))</div>
|
|
1226
|
+
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
|
|
1227
|
+
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  <span class="keywordflow">else</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>
|
|
1228
|
+
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div>
|
|
1229
|
+
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</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>
|
|
1230
|
+
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">getSVFArgument</a>(arg);</div>
|
|
1231
|
+
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* cons = SVFUtil::dyn_cast<Constant>(value))</div>
|
|
1232
|
+
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  {</div>
|
|
1233
|
+
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* cd = SVFUtil::dyn_cast<ConstantData>(cons))</div>
|
|
1234
|
+
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">getSVFConstantData</a>(cd);</div>
|
|
1235
|
+
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a>* glob = SVFUtil::dyn_cast<GlobalValue>(cons))</div>
|
|
1236
|
+
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">getSVFGlobalValue</a>(glob);</div>
|
|
1237
|
+
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  <span class="keywordflow">else</span></div>
|
|
1238
|
+
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">getOtherSVFConstant</a>(cons);</div>
|
|
1240
1239
|
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  }</div>
|
|
1241
|
-
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> 
|
|
1242
|
-
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> 
|
|
1240
|
+
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <span class="keywordflow">else</span></div>
|
|
1241
|
+
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">getSVFOtherValue</a>(value);</div>
|
|
1243
1242
|
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span> }</div>
|
|
1244
1243
|
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  </div>
|
|
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="
|
|
1260
|
-
<div class="line"><a name="
|
|
1261
|
-
<div class="line"><a name="
|
|
1262
|
-
<div class="line"><a name="
|
|
1263
|
-
<div class="line"><a name="
|
|
1264
|
-
<div class="line"><a name="
|
|
1265
|
-
<div class="line"><a name="
|
|
1266
|
-
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> 
|
|
1267
|
-
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span> 
|
|
1268
|
-
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  <
|
|
1269
|
-
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> 
|
|
1270
|
-
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span> 
|
|
1271
|
-
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span> 
|
|
1272
|
-
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> 
|
|
1273
|
-
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span> 
|
|
1274
|
-
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span> 
|
|
1275
|
-
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span> 
|
|
1276
|
-
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> 
|
|
1277
|
-
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span> 
|
|
1278
|
-
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span> 
|
|
1279
|
-
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span> 
|
|
1280
|
-
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span> 
|
|
1281
|
-
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> 
|
|
1282
|
-
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> 
|
|
1283
|
-
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span> 
|
|
1284
|
-
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span> 
|
|
1285
|
-
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> 
|
|
1286
|
-
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> 
|
|
1287
|
-
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> 
|
|
1288
|
-
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> 
|
|
1289
|
-
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> 
|
|
1290
|
-
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> 
|
|
1291
|
-
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  </div>
|
|
1292
|
-
<div class="line"><a name="l01254"></a><span class="lineno"
|
|
1293
|
-
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> 
|
|
1294
|
-
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span> 
|
|
1295
|
-
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> 
|
|
1296
|
-
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  </div>
|
|
1297
|
-
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span> 
|
|
1298
|
-
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  <a class="code" href="
|
|
1299
|
-
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  <
|
|
1300
|
-
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span> 
|
|
1301
|
-
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span> 
|
|
1302
|
-
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span> 
|
|
1303
|
-
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> 
|
|
1304
|
-
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span> 
|
|
1305
|
-
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span> 
|
|
1306
|
-
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> 
|
|
1307
|
-
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> 
|
|
1308
|
-
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  <span class="
|
|
1309
|
-
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> 
|
|
1310
|
-
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> 
|
|
1311
|
-
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span> 
|
|
1312
|
-
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span> 
|
|
1313
|
-
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span> 
|
|
1314
|
-
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  <
|
|
1315
|
-
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> 
|
|
1316
|
-
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span> 
|
|
1317
|
-
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span> 
|
|
1318
|
-
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> 
|
|
1319
|
-
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span> 
|
|
1320
|
-
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span> 
|
|
1321
|
-
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  svftype = <span class="keyword">new</span> <a class="code" href="
|
|
1322
|
-
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> 
|
|
1323
|
-
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span> 
|
|
1324
|
-
<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span> 
|
|
1325
|
-
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  <span class="
|
|
1326
|
-
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span> 
|
|
1327
|
-
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span> 
|
|
1328
|
-
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span> 
|
|
1329
|
-
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span> 
|
|
1330
|
-
<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span> 
|
|
1331
|
-
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span> 
|
|
1332
|
-
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span> 
|
|
1333
|
-
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> 
|
|
1334
|
-
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span> 
|
|
1335
|
-
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span> 
|
|
1336
|
-
<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span> 
|
|
1337
|
-
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span> 
|
|
1338
|
-
<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span> 
|
|
1339
|
-
<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span> 
|
|
1340
|
-
<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> 
|
|
1341
|
-
<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span> 
|
|
1342
|
-
<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> 
|
|
1343
|
-
<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span> 
|
|
1344
|
-
<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  </div>
|
|
1345
|
-
<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span> 
|
|
1346
|
-
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span> 
|
|
1347
|
-
<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  <span class="keywordflow">
|
|
1244
|
+
<div class="line"><a name="l01199"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a610a7777a48132caadec167c8109f044"> 1199</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a610a7777a48132caadec167c8109f044">LLVMModuleSet::getLLVMType</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* T)<span class="keyword"> const</span></div>
|
|
1245
|
+
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> <span class="keyword"></span>{</div>
|
|
1246
|
+
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  <span class="keywordflow">for</span>(LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.begin(), eit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end(); it!=eit; ++it)</div>
|
|
1247
|
+
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  {</div>
|
|
1248
|
+
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <span class="keywordflow">if</span> (it->second == T)</div>
|
|
1249
|
+
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  <span class="keywordflow">return</span> it->first;</div>
|
|
1250
|
+
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  }</div>
|
|
1251
|
+
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"can't find the corresponding LLVM Type"</span>);</div>
|
|
1252
|
+
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  abort();</div>
|
|
1253
|
+
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> }</div>
|
|
1254
|
+
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  </div>
|
|
1255
|
+
<div class="line"><a name="l01213"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99"> 1213</a></span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">LLVMModuleSet::getSVFType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T)</div>
|
|
1256
|
+
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span> {</div>
|
|
1257
|
+
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  assert(T && <span class="stringliteral">"SVFType should not be null"</span>);</div>
|
|
1258
|
+
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  LLVMType2SVFTypeMap::const_iterator it = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T);</div>
|
|
1259
|
+
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end())</div>
|
|
1260
|
+
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  <span class="keywordflow">return</span> it->second;</div>
|
|
1261
|
+
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  </div>
|
|
1262
|
+
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">addSVFTypeInfo</a>(T);</div>
|
|
1263
|
+
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(T);</div>
|
|
1264
|
+
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  svfType-><a class="code" href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">setTypeInfo</a>(stinfo);</div>
|
|
1265
|
+
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = PointerType::getInt8PtrTy(<a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>());</div>
|
|
1266
|
+
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  svfType-><a class="code" href="classSVF_1_1SVFType.html#a3ddabbd763acaaca28cacbabe5bc7f3b">setPointerTo</a>(SVFUtil::cast<SVFPointerType>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ptrTy)));</div>
|
|
1267
|
+
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  <span class="keywordflow">return</span> svfType;</div>
|
|
1268
|
+
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> }</div>
|
|
1269
|
+
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  </div>
|
|
1270
|
+
<div class="line"><a name="l01233"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92"> 1233</a></span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">LLVMModuleSet::collectTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T)</div>
|
|
1271
|
+
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> {</div>
|
|
1272
|
+
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  Type2TypeInfoMap::iterator tit = <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.find(T);</div>
|
|
1273
|
+
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <span class="keywordflow">if</span> (tit != <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.end())</div>
|
|
1274
|
+
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  {</div>
|
|
1275
|
+
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  <span class="keywordflow">return</span> tit->second;</div>
|
|
1276
|
+
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  }</div>
|
|
1277
|
+
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  <span class="comment">// No such StInfo for T, create it now.</span></div>
|
|
1278
|
+
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo;</div>
|
|
1279
|
+
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast<ArrayType>(T))</div>
|
|
1280
|
+
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  {</div>
|
|
1281
|
+
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">collectArrayInfo</a>(aty);</div>
|
|
1282
|
+
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  }</div>
|
|
1283
|
+
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* sty = SVFUtil::dyn_cast<StructType>(T))</div>
|
|
1284
|
+
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  {</div>
|
|
1285
|
+
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf;</div>
|
|
1286
|
+
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">collectStructInfo</a>(sty, nf);</div>
|
|
1287
|
+
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <span class="keywordflow">if</span> (nf > <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div>
|
|
1288
|
+
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  {</div>
|
|
1289
|
+
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">maxStruct</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(sty);</div>
|
|
1290
|
+
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div>
|
|
1291
|
+
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  }</div>
|
|
1292
|
+
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  }</div>
|
|
1293
|
+
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  <span class="keywordflow">else</span></div>
|
|
1294
|
+
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  {</div>
|
|
1295
|
+
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">collectSimpleTypeInfo</a>(T);</div>
|
|
1296
|
+
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  }</div>
|
|
1297
|
+
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">Type2TypeInfo</a>.emplace(T, stInfo);</div>
|
|
1298
|
+
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a72be32d606db86090067159de44e01ec">addStInfo</a>(stInfo);</div>
|
|
1299
|
+
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1300
|
+
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span> }</div>
|
|
1301
|
+
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  </div>
|
|
1302
|
+
<div class="line"><a name="l01265"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073"> 1265</a></span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">LLVMModuleSet::addSVFTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T)</div>
|
|
1303
|
+
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span> {</div>
|
|
1304
|
+
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  assert(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.find(T) == <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>.end() &&</div>
|
|
1305
|
+
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  <span class="stringliteral">"SVFType has been added before"</span>);</div>
|
|
1306
|
+
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  </div>
|
|
1307
|
+
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  <span class="comment">// add SVFType's LLVM byte size iff T isSized(), otherwise byteSize is 0(default value)</span></div>
|
|
1308
|
+
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> byteSize = 0;</div>
|
|
1309
|
+
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  <span class="keywordflow">if</span> (T->isSized())</div>
|
|
1310
|
+
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  {</div>
|
|
1311
|
+
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">llvm::DataLayout</a> &DL = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-></div>
|
|
1312
|
+
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>()->getDataLayout();</div>
|
|
1313
|
+
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *mut_T = <span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<span class="keyword">></span>(T);</div>
|
|
1314
|
+
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  byteSize = DL.getTypeAllocSize(mut_T);</div>
|
|
1315
|
+
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  }</div>
|
|
1316
|
+
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  </div>
|
|
1317
|
+
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype;</div>
|
|
1318
|
+
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  <span class="keywordflow">if</span> (SVFUtil::isa<PointerType>(T))</div>
|
|
1319
|
+
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  {</div>
|
|
1320
|
+
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>(byteSize);</div>
|
|
1321
|
+
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  }</div>
|
|
1322
|
+
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a>* intT = SVFUtil::dyn_cast<IntegerType>(T))</div>
|
|
1323
|
+
<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  {</div>
|
|
1324
|
+
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  <span class="keyword">auto</span> svfIntT = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIntegerType.html">SVFIntegerType</a>(byteSize);</div>
|
|
1325
|
+
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  <span class="keywordtype">unsigned</span> signWidth = intT->getBitWidth();</div>
|
|
1326
|
+
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  assert(signWidth < INT16_MAX && <span class="stringliteral">"Integer width too big"</span>);</div>
|
|
1327
|
+
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  svfIntT->setSignAndWidth(intT->getSignBit() ? -signWidth : signWidth);</div>
|
|
1328
|
+
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  svftype = svfIntT;</div>
|
|
1329
|
+
<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  }</div>
|
|
1330
|
+
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* ft = SVFUtil::dyn_cast<FunctionType>(T))</div>
|
|
1331
|
+
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  svftype = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFFunctionType.html">SVFFunctionType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ft->getReturnType()));</div>
|
|
1332
|
+
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* st = SVFUtil::dyn_cast<StructType>(T))</div>
|
|
1333
|
+
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  {</div>
|
|
1334
|
+
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  <span class="keyword">auto</span> svfst = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>(byteSize);</div>
|
|
1335
|
+
<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  <span class="keywordflow">if</span> (st->hasName())</div>
|
|
1336
|
+
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  svfst->setName(st->getName().str());</div>
|
|
1337
|
+
<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  svftype = svfst;</div>
|
|
1338
|
+
<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  }</div>
|
|
1339
|
+
<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keyword">auto</span> at = SVFUtil::dyn_cast<ArrayType>(T))</div>
|
|
1340
|
+
<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  {</div>
|
|
1341
|
+
<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  <span class="keyword">auto</span> svfat = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>(byteSize);</div>
|
|
1342
|
+
<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  svfat->setNumOfElement(at->getNumElements());</div>
|
|
1343
|
+
<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  svfat->setTypeOfElement(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(at->getElementType()));</div>
|
|
1344
|
+
<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  svftype = svfat;</div>
|
|
1345
|
+
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  }</div>
|
|
1346
|
+
<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  <span class="keywordflow">else</span></div>
|
|
1348
1347
|
<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  {</div>
|
|
1349
|
-
<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <
|
|
1350
|
-
<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  <a class="code" href="
|
|
1351
|
-
<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> 
|
|
1352
|
-
<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> 
|
|
1353
|
-
<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> 
|
|
1354
|
-
<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span> 
|
|
1355
|
-
<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> 
|
|
1356
|
-
<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span> 
|
|
1357
|
-
<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  </div>
|
|
1358
|
-
<div class="line"><a name="
|
|
1359
|
-
<div class="line"><a name="
|
|
1360
|
-
<div class="line"><a name="
|
|
1361
|
-
<div class="line"><a name="
|
|
1362
|
-
<div class="line"><a name="
|
|
1363
|
-
<div class="line"><a name="
|
|
1364
|
-
<div class="line"><a name="
|
|
1365
|
-
<div class="line"><a name="
|
|
1366
|
-
<div class="line"><a name="
|
|
1367
|
-
<div class="line"><a name="
|
|
1368
|
-
<div class="line"><a name="
|
|
1369
|
-
<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span> 
|
|
1370
|
-
<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span> 
|
|
1371
|
-
<div class="line"><a name="
|
|
1372
|
-
<div class="line"><a name="
|
|
1373
|
-
<div class="line"><a name="
|
|
1374
|
-
<div class="line"><a name="
|
|
1375
|
-
<div class="line"><a name="
|
|
1376
|
-
<div class="line"><a name="
|
|
1377
|
-
<div class="line"><a name="
|
|
1378
|
-
<div class="line"><a name="
|
|
1379
|
-
<div class="line"><a name="
|
|
1380
|
-
<div class="line"><a name="
|
|
1381
|
-
<div class="line"><a name="
|
|
1382
|
-
<div class="line"><a name="
|
|
1383
|
-
<div class="line"><a name="
|
|
1384
|
-
<div class="line"><a name="
|
|
1385
|
-
<div class="line"><a name="
|
|
1386
|
-
<div class="line"><a name="
|
|
1348
|
+
<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>;</div>
|
|
1349
|
+
<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  <span class="keyword">auto</span> ot = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFOtherType.html">SVFOtherType</a>(byteSize, T->isSingleValueType());</div>
|
|
1350
|
+
<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  llvm::raw_string_ostream(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>) << *T;</div>
|
|
1351
|
+
<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  ot->setRepr(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">std::move</a>(<a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>));</div>
|
|
1352
|
+
<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  svftype = ot;</div>
|
|
1353
|
+
<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  }</div>
|
|
1354
|
+
<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  </div>
|
|
1355
|
+
<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">symInfo</a>-><a class="code" href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">addTypeInfo</a>(svftype);</div>
|
|
1356
|
+
<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">LLVMType2SVFType</a>[T] = svftype;</div>
|
|
1357
|
+
<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pt = SVFUtil::dyn_cast<PointerType>(T))</div>
|
|
1358
|
+
<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  {</div>
|
|
1359
|
+
<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  <span class="comment">//cast svftype to SVFPointerType</span></div>
|
|
1360
|
+
<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* svfPtrType = SVFUtil::dyn_cast<SVFPointerType>(svftype);</div>
|
|
1361
|
+
<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  assert(svfPtrType && <span class="stringliteral">"this is not SVFPointerType"</span>);</div>
|
|
1362
|
+
<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  svfPtrType-><a class="code" href="classSVF_1_1SVFPointerType.html#aaaa79de3df0f6764bfd3d2e487ea7a09">setPtrElementType</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(pt)));</div>
|
|
1363
|
+
<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  }</div>
|
|
1364
|
+
<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  </div>
|
|
1365
|
+
<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  <span class="keywordflow">return</span> svftype;</div>
|
|
1366
|
+
<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span> }</div>
|
|
1367
|
+
<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  </div>
|
|
1368
|
+
<div class="line"><a name="l01334"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29"> 1334</a></span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">LLVMModuleSet::collectArrayInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* ty)</div>
|
|
1369
|
+
<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span> {</div>
|
|
1370
|
+
<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> totalElemNum = ty->getNumElements();</div>
|
|
1371
|
+
<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = ty->getElementType();</div>
|
|
1372
|
+
<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast<ArrayType>(elemTy))</div>
|
|
1373
|
+
<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  {</div>
|
|
1374
|
+
<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>  totalElemNum *= aty->getNumElements();</div>
|
|
1375
|
+
<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  elemTy = aty->getElementType();</div>
|
|
1376
|
+
<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  }</div>
|
|
1377
|
+
<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  </div>
|
|
1378
|
+
<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(totalElemNum);</div>
|
|
1379
|
+
<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemSvfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy);</div>
|
|
1380
|
+
<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>  </div>
|
|
1381
|
+
<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  <span class="keywordflow">if</span> (totalElemNum == 0)</div>
|
|
1382
|
+
<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  {</div>
|
|
1383
|
+
<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, 0);</div>
|
|
1384
|
+
<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1, 1);</div>
|
|
1385
|
+
<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfType);</div>
|
|
1386
|
+
<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfType);</div>
|
|
1387
|
+
<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1387
1388
|
<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  }</div>
|
|
1388
1389
|
<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  </div>
|
|
1389
|
-
<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  <a class="code" href="
|
|
1390
|
-
<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>  <
|
|
1391
|
-
<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span> 
|
|
1392
|
-
<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span> 
|
|
1393
|
-
<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span> 
|
|
1394
|
-
<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span> 
|
|
1395
|
-
<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  </div>
|
|
1396
|
-
<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> 
|
|
1397
|
-
<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> 
|
|
1398
|
-
<div class="line"><a name="
|
|
1399
|
-
<div class="line"><a name="
|
|
1400
|
-
<div class="line"><a name="
|
|
1401
|
-
<div class="line"><a name="
|
|
1402
|
-
<div class="line"><a name="
|
|
1403
|
-
<div class="line"><a name="
|
|
1404
|
-
<div class="line"><a name="
|
|
1405
|
-
<div class="line"><a name="
|
|
1406
|
-
<div class="line"><a name="
|
|
1407
|
-
<div class="line"><a name="
|
|
1408
|
-
<div class="line"><a name="
|
|
1409
|
-
<div class="line"><a name="
|
|
1410
|
-
<div class="line"><a name="
|
|
1411
|
-
<div class="line"><a name="
|
|
1412
|
-
<div class="line"><a name="
|
|
1413
|
-
<div class="line"><a name="
|
|
1414
|
-
<div class="line"><a name="
|
|
1415
|
-
<div class="line"><a name="
|
|
1416
|
-
<div class="line"><a name="
|
|
1417
|
-
<div class="line"><a name="
|
|
1418
|
-
<div class="line"><a name="
|
|
1419
|
-
<div class="line"><a name="
|
|
1420
|
-
<div class="line"><a name="
|
|
1421
|
-
<div class="line"><a name="
|
|
1422
|
-
<div class="line"><a name="
|
|
1423
|
-
<div class="line"><a name="
|
|
1424
|
-
<div class="line"><a name="
|
|
1425
|
-
<div class="line"><a name="
|
|
1426
|
-
<div class="line"><a name="
|
|
1427
|
-
<div class="line"><a name="
|
|
1428
|
-
<div class="line"><a name="
|
|
1429
|
-
<div class="line"><a name="
|
|
1430
|
-
<div class="line"><a name="
|
|
1431
|
-
<div class="line"><a name="
|
|
1432
|
-
<div class="line"><a name="
|
|
1433
|
-
<div class="line"><a name="
|
|
1434
|
-
<div class="line"><a name="
|
|
1435
|
-
<div class="line"><a name="
|
|
1436
|
-
<div class="line"><a name="
|
|
1437
|
-
<div class="line"><a name="
|
|
1438
|
-
<div class="line"><a name="
|
|
1439
|
-
<div class="line"><a name="
|
|
1440
|
-
<div class="line"><a name="
|
|
1441
|
-
<div class="line"><a name="
|
|
1442
|
-
<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="
|
|
1453
|
-
<div class="line"><a name="
|
|
1454
|
-
<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>  }</div>
|
|
1455
|
-
<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>  }</div>
|
|
1390
|
+
<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* elemStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div>
|
|
1391
|
+
<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
|
|
1392
|
+
<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
|
|
1393
|
+
<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j < nfF; j++)</div>
|
|
1394
|
+
<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  {</div>
|
|
1395
|
+
<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* fieldTy = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
|
|
1396
|
+
<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(fieldTy);</div>
|
|
1397
|
+
<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  }</div>
|
|
1398
|
+
<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>  </div>
|
|
1399
|
+
<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> outArrayElemNum = ty->getNumElements();</div>
|
|
1400
|
+
<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < outArrayElemNum; ++i)</div>
|
|
1401
|
+
<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>  {</div>
|
|
1402
|
+
<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  <span class="keyword">auto</span> idx = (i * nfE * totalElemNum) / outArrayElemNum;</div>
|
|
1403
|
+
<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, elemSvfType, idx);</div>
|
|
1404
|
+
<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>  }</div>
|
|
1405
|
+
<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  </div>
|
|
1406
|
+
<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < totalElemNum; ++i)</div>
|
|
1407
|
+
<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  {</div>
|
|
1408
|
+
<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j < nfE; ++j)</div>
|
|
1409
|
+
<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>  {</div>
|
|
1410
|
+
<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* et = elemStInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[j];</div>
|
|
1411
|
+
<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(et);</div>
|
|
1412
|
+
<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  }</div>
|
|
1413
|
+
<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>  }</div>
|
|
1414
|
+
<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>  </div>
|
|
1415
|
+
<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  assert(stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == nfE * totalElemNum &&</div>
|
|
1416
|
+
<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  <span class="stringliteral">"typeForArray size incorrect!!!"</span>);</div>
|
|
1417
|
+
<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(nfF, nfE * totalElemNum);</div>
|
|
1418
|
+
<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>  </div>
|
|
1419
|
+
<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1420
|
+
<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span> }</div>
|
|
1421
|
+
<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  </div>
|
|
1422
|
+
<div class="line"><a name="l01397"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258"> 1397</a></span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">LLVMModuleSet::collectStructInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* structTy,</div>
|
|
1423
|
+
<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>& numFields)</div>
|
|
1424
|
+
<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> {</div>
|
|
1425
|
+
<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div>
|
|
1426
|
+
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>  </div>
|
|
1427
|
+
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  <span class="comment">// Number of fields after flattening the struct</span></div>
|
|
1428
|
+
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  numFields = 0;</div>
|
|
1429
|
+
<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  <span class="comment">// The offset when considering array stride info</span></div>
|
|
1430
|
+
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> strideOffset = 0;</div>
|
|
1431
|
+
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy : structTy->elements())</div>
|
|
1432
|
+
<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  {</div>
|
|
1433
|
+
<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemSvfTy = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(elemTy);</div>
|
|
1434
|
+
<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  <span class="comment">// offset with int_32 (s32_t) is large enough and won't overflow</span></div>
|
|
1435
|
+
<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(numFields, elemSvfTy, strideOffset);</div>
|
|
1436
|
+
<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  </div>
|
|
1437
|
+
<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType, ArrayType>(elemTy))</div>
|
|
1438
|
+
<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  {</div>
|
|
1439
|
+
<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* subStInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">collectTypeInfo</a>(elemTy);</div>
|
|
1440
|
+
<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfF = subStInfo-><a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
|
|
1441
|
+
<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStInfo-><a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
|
|
1442
|
+
<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  <span class="comment">// Copy ST's info, whose element 0 is the size of ST itself.</span></div>
|
|
1443
|
+
<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j < nfF; ++j)</div>
|
|
1444
|
+
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>  {</div>
|
|
1445
|
+
<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = subStInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>()[j];</div>
|
|
1446
|
+
<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemTy);</div>
|
|
1447
|
+
<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  }</div>
|
|
1448
|
+
<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  numFields += nfF;</div>
|
|
1449
|
+
<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  strideOffset += nfE;</div>
|
|
1450
|
+
<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tpj = 0; tpj < nfE; ++tpj)</div>
|
|
1451
|
+
<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>  {</div>
|
|
1452
|
+
<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty = subStInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>()[tpj];</div>
|
|
1453
|
+
<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(ty);</div>
|
|
1454
|
+
<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>  }</div>
|
|
1456
1455
|
<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>  </div>
|
|
1457
|
-
<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> 
|
|
1458
|
-
<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span> 
|
|
1459
|
-
<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span> 
|
|
1460
|
-
<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  </div>
|
|
1461
|
-
<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span> 
|
|
1462
|
-
<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span> 
|
|
1463
|
-
<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  </div>
|
|
1464
|
-
<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>  </div>
|
|
1465
|
-
<div class="line"><a name="
|
|
1466
|
-
<div class="line"><a name="
|
|
1467
|
-
<div class="line"><a name="
|
|
1468
|
-
<div class="line"><a name="
|
|
1469
|
-
<div class="line"><a name="
|
|
1456
|
+
<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>  }</div>
|
|
1457
|
+
<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>  <span class="keywordflow">else</span></div>
|
|
1458
|
+
<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>  {</div>
|
|
1459
|
+
<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  <span class="comment">// Simple type</span></div>
|
|
1460
|
+
<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>  numFields += 1;</div>
|
|
1461
|
+
<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>  strideOffset += 1;</div>
|
|
1462
|
+
<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(elemSvfTy);</div>
|
|
1463
|
+
<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(elemSvfTy);</div>
|
|
1464
|
+
<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>  }</div>
|
|
1465
|
+
<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>  }</div>
|
|
1466
|
+
<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>  </div>
|
|
1467
|
+
<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>  assert(stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().size() == strideOffset &&</div>
|
|
1468
|
+
<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>  <span class="stringliteral">"typeForStruct size incorrect!"</span>);</div>
|
|
1469
|
+
<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(numFields,strideOffset);</div>
|
|
1470
|
+
<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  </div>
|
|
1471
|
+
<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1472
|
+
<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span> }</div>
|
|
1470
1473
|
<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  </div>
|
|
1471
|
-
<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> 
|
|
1472
|
-
<div class="line"><a name="
|
|
1473
|
-
<div class="line"><a name="
|
|
1474
|
-
<div class="line"><a name="
|
|
1475
|
-
<div class="line"><a name="
|
|
1476
|
-
<div class="line"><a name="
|
|
1474
|
+
<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  </div>
|
|
1475
|
+
<div class="line"><a name="l01454"></a><span class="lineno"><a class="line" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2"> 1454</a></span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">LLVMModuleSet::collectSimpleTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ty)</div>
|
|
1476
|
+
<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span> {</div>
|
|
1477
|
+
<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(1);</div>
|
|
1478
|
+
<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType = <a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ty);</div>
|
|
1479
|
+
<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">addFldWithType</a>(0, svfType, 0);</div>
|
|
1480
|
+
<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>  </div>
|
|
1481
|
+
<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>().push_back(svfType);</div>
|
|
1482
|
+
<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">getFlattenElementTypes</a>().push_back(svfType);</div>
|
|
1483
|
+
<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>  stInfo-><a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(1,1);</div>
|
|
1484
|
+
<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>  </div>
|
|
1485
|
+
<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>  <span class="keywordflow">return</span> stInfo;</div>
|
|
1486
|
+
<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> }</div>
|
|
1477
1487
|
</div><!-- fragment --></div><!-- contents -->
|
|
1478
1488
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a72be32d606db86090067159de44e01ec"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a72be32d606db86090067159de44e01ec">SVF::SymbolTableInfo::addStInfo</a></div><div class="ttdeci">void addStInfo(StInfo *stInfo)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00352">SymbolTableInfo.h:352</a></div></div>
|
|
1479
1489
|
<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>
|
|
1480
1490
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_af2c555af91679d9e6d3009547ee11486"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#af2c555af91679d9e6d3009547ee11486">SVF::LLVMModuleSet::Type2TypeInfo</a></div><div class="ttdeci">Type2TypeInfoMap Type2TypeInfo</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00091">LLVMModule.h:91</a></div></div>
|
|
1481
1491
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae265a7f3cc7367d62013e0f15cf3d233"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">SVF::LLVMModuleSet::getModuleNum</a></div><div class="ttdeci">u32_t getModuleNum() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00125">LLVMModule.h:125</a></div></div>
|
|
1482
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aaab03cb6ff665bc008c67b866ba81e47"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aaab03cb6ff665bc008c67b866ba81e47">SVF::LLVMModuleSet::buildGlobalDefToRepMap</a></div><div class="ttdeci">void buildGlobalDefToRepMap()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1483
|
-
<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#
|
|
1492
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aaab03cb6ff665bc008c67b866ba81e47"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aaab03cb6ff665bc008c67b866ba81e47">SVF::LLVMModuleSet::buildGlobalDefToRepMap</a></div><div class="ttdeci">void buildGlobalDefToRepMap()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01000">LLVMModule.cpp:1000</a></div></div>
|
|
1493
|
+
<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>
|
|
1484
1494
|
<div class="ttc" id="aLLVMModule_8cpp_html_a9fd6e28e6ed93f65a20a348ab0646320"><div class="ttname"><a href="LLVMModule_8cpp.html#a9fd6e28e6ed93f65a20a348ab0646320">SVF_GLOBAL_DTORS</a></div><div class="ttdeci">#define SVF_GLOBAL_DTORS</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00069">LLVMModule.cpp:69</a></div></div>
|
|
1485
1495
|
<div class="ttc" id="aclassSVF_1_1SVFType_html_aef5999ada62dac3cc946d832ac66948c"><div class="ttname"><a href="classSVF_1_1SVFType.html#aef5999ada62dac3cc946d832ac66948c">SVF::SVFType::setTypeInfo</a></div><div class="ttdeci">void setTypeInfo(StInfo *ti)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00304">SVFType.h:304</a></div></div>
|
|
1486
1496
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html">SVF::SVFLoopAndDomInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00050">SVFValue.h:50</a></div></div>
|
|
@@ -1488,16 +1498,16 @@ $(function() {
|
|
|
1488
1498
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00101">LLVMModule.h:101</a></div></div>
|
|
1489
1499
|
<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>
|
|
1490
1500
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a0c1143eff451edf8ea47d4487a8d3a55"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a0c1143eff451edf8ea47d4487a8d3a55">SVF::SymbolTableInfo::maxStruct</a></div><div class="ttdeci">const SVFType * maxStruct</div><div class="ttdoc">The struct type with the most fields.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00340">SymbolTableInfo.h:340</a></div></div>
|
|
1491
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aab7b08db9252ef7e21e54d019f44b073"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">SVF::LLVMModuleSet::addSVFTypeInfo</a></div><div class="ttdeci">SVFType * addSVFTypeInfo(const Type *t)</div><div class="ttdoc">Create SVFTypes.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1492
|
-
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_ac1b15d8f9c2499add8dbc889ae5cab65"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">SVF::SVFBasicBlock::addInstruction</a></div><div class="ttdeci">void addInstruction(const SVFInstruction *inst)</div><div class="ttdoc">Function where this BasicBlock is.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1501
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aab7b08db9252ef7e21e54d019f44b073"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aab7b08db9252ef7e21e54d019f44b073">SVF::LLVMModuleSet::addSVFTypeInfo</a></div><div class="ttdeci">SVFType * addSVFTypeInfo(const Type *t)</div><div class="ttdoc">Create SVFTypes.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01265">LLVMModule.cpp:1265</a></div></div>
|
|
1502
|
+
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_ac1b15d8f9c2499add8dbc889ae5cab65"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ac1b15d8f9c2499add8dbc889ae5cab65">SVF::SVFBasicBlock::addInstruction</a></div><div class="ttdeci">void addInstruction(const SVFInstruction *inst)</div><div class="ttdoc">Function where this BasicBlock is.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00546">SVFValue.h:546</a></div></div>
|
|
1493
1503
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4091b12bdfe4423d8114612a199bc480"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4091b12bdfe4423d8114612a199bc480">SVF::LLVMModuleSet::getLLVMModules</a></div><div class="ttdeci">const std::vector< std::reference_wrapper< Module > > & getLLVMModules() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00130">LLVMModule.h:130</a></div></div>
|
|
1494
1504
|
<div class="ttc" id="anamespaceSVF_html_a94824519e439aeef1568d415b6f7331c"><div class="ttname"><a href="namespaceSVF.html#a94824519e439aeef1568d415b6f7331c">SVF::IRBuilder</a></div><div class="ttdeci">llvm::IRBuilder IRBuilder</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
1495
1505
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_acde6292e719c80f93d3d1c344ab442cd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acde6292e719c80f93d3d1c344ab442cd">SVF::LLVMModuleSet::modules</a></div><div class="ttdeci">std::vector< std::reference_wrapper< Module > > modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00072">LLVMModule.h:72</a></div></div>
|
|
1496
|
-
<div class="ttc" id="aclassSVF_1_1SVFCallInst_html"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html">SVF::SVFCallInst</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1506
|
+
<div class="ttc" id="aclassSVF_1_1SVFCallInst_html"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html">SVF::SVFCallInst</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00699">SVFValue.h:699</a></div></div>
|
|
1497
1507
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a7de84e7817406867b173e1591e0681ac"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7de84e7817406867b173e1591e0681ac">SVF::LLVMModuleSet::addGlobalValueMap</a></div><div class="ttdeci">void addGlobalValueMap(const GlobalValue *glob, SVFGlobalValue *svfglob)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00169">LLVMModule.h:169</a></div></div>
|
|
1498
1508
|
<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>
|
|
1499
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac7c646a78c989807c52263fc35fb3628"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac7c646a78c989807c52263fc35fb3628">SVF::LLVMModuleSet::buildFunToFunMap</a></div><div class="ttdeci">void buildFunToFunMap()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1500
|
-
<div class="ttc" id="aclassSVF_1_1SVFCallInst_html_a6dd304f555d2d2388c4430e57b0d2b91"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">SVF::SVFCallInst::setCalledOperand</a></div><div class="ttdeci">void setCalledOperand(const SVFValue *v)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1509
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac7c646a78c989807c52263fc35fb3628"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac7c646a78c989807c52263fc35fb3628">SVF::LLVMModuleSet::buildFunToFunMap</a></div><div class="ttdeci">void buildFunToFunMap()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00818">LLVMModule.cpp:818</a></div></div>
|
|
1510
|
+
<div class="ttc" id="aclassSVF_1_1SVFCallInst_html_a6dd304f555d2d2388c4430e57b0d2b91"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#a6dd304f555d2d2388c4430e57b0d2b91">SVF::SVFCallInst::setCalledOperand</a></div><div class="ttdeci">void setCalledOperand(const SVFValue *v)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00717">SVFValue.h:717</a></div></div>
|
|
1501
1511
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a91083d9504ae5d220b28e0b3e461d4aa"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a91083d9504ae5d220b28e0b3e461d4aa">SVF::SymbolTableInfo::addTypeInfo</a></div><div class="ttdeci">void addTypeInfo(const SVFType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00345">SymbolTableInfo.h:345</a></div></div>
|
|
1502
1512
|
<div class="ttc" id="aclassSVF_1_1SVFPointerType_html"><div class="ttname"><a href="classSVF_1_1SVFPointerType.html">SVF::SVFPointerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00351">SVFType.h:351</a></div></div>
|
|
1503
1513
|
<div class="ttc" id="anamespaceSVF_html_a77e088bfe47c0b0ddcbbe0693dec6fe5"><div class="ttname"><a href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">SVF::LoopInfo</a></div><div class="ttdeci">llvm::LoopInfo LoopInfo</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00139">BasicTypes.h:139</a></div></div>
|
|
@@ -1507,7 +1517,7 @@ $(function() {
|
|
|
1507
1517
|
<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>
|
|
1508
1518
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab932917041e1b1d8b461bfef464330fd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab932917041e1b1d8b461bfef464330fd">SVF::LLVMModuleSet::ExtFuncsVec</a></div><div class="ttdeci">FunctionSetType ExtFuncsVec</div><div class="ttdoc">Record some "sse_" function declarations used in other ext function definition, e....</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00079">LLVMModule.h:79</a></div></div>
|
|
1509
1519
|
<div class="ttc" id="anamespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
|
|
1510
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_af37b9976b282c875cac7bb1777da635c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">SVF::LLVMModuleSet::dumpModulesToFile</a></div><div class="ttdeci">void dumpModulesToFile(const std::string &suffix)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1520
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_af37b9976b282c875cac7bb1777da635c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#af37b9976b282c875cac7bb1777da635c">SVF::LLVMModuleSet::dumpModulesToFile</a></div><div class="ttdeci">void dumpModulesToFile(const std::string &suffix)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01043">LLVMModule.cpp:1043</a></div></div>
|
|
1511
1521
|
<div class="ttc" id="aSVFGBuilder_8h_html"><div class="ttname"><a href="SVFGBuilder_8h.html">SVFGBuilder.h</a></div></div>
|
|
1512
1522
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ad3f66b40ad360003845253f452d6a711"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad3f66b40ad360003845253f452d6a711">SVF::LLVMModuleSet::getSVFArgument</a></div><div class="ttdeci">SVFArgument * getSVFArgument(const Argument *arg) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00220">LLVMModule.h:220</a></div></div>
|
|
1513
1523
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a8325774df9d65d78ef6a66fef59b9a97"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a8325774df9d65d78ef6a66fef59b9a97">SVF::SVFValue::setName</a></div><div class="ttdeci">void setName(const std::string &n)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00247">SVFValue.h:247</a></div></div>
|
|
@@ -1519,31 +1529,31 @@ $(function() {
|
|
|
1519
1529
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_a7af3076a26060090377d1f74293560fe"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a7af3076a26060090377d1f74293560fe">SVF::SVFModule::setPagFromTXT</a></div><div class="ttdeci">static void setPagFromTXT(const std::string &txt)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00083">SVFModule.h:83</a></div></div>
|
|
1520
1530
|
<div class="ttc" id="aSVFType_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFType_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00604">SVFType.h:604</a></div></div>
|
|
1521
1531
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a3eaadb33cd21d0bd868526b5ddb051d9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3eaadb33cd21d0bd868526b5ddb051d9">SVF::LLVMModuleSet::addBasicBlockMap</a></div><div class="ttdeci">void addBasicBlockMap(const BasicBlock *bb, SVFBasicBlock *svfBB)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00154">LLVMModule.h:154</a></div></div>
|
|
1522
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0ef17c1d5e6a95c597d2334ea577a965"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">SVF::LLVMModuleSet::getSVFOtherValue</a></div><div class="ttdeci">SVFOtherValue * getSVFOtherValue(const Value *ov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1532
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0ef17c1d5e6a95c597d2334ea577a965"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0ef17c1d5e6a95c597d2334ea577a965">SVF::LLVMModuleSet::getSVFOtherValue</a></div><div class="ttdeci">SVFOtherValue * getSVFOtherValue(const Value *ov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01157">LLVMModule.cpp:1157</a></div></div>
|
|
1523
1533
|
<div class="ttc" id="aclassSVF_1_1StInfo_html_a518c82138fcadc6634980566c1c0f762"><div class="ttname"><a href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">SVF::StInfo::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements() const</div><div class="ttdoc">Return number of elements after flattening (including array elements)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00225">SVFType.h:225</a></div></div>
|
|
1524
|
-
<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#
|
|
1525
|
-
<div class="ttc" id="aclassSVF_1_1SVFConstantData_html"><div class="ttname"><a href="classSVF_1_1SVFConstantData.html">SVF::SVFConstantData</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1526
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1534
|
+
<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>
|
|
1535
|
+
<div class="ttc" id="aclassSVF_1_1SVFConstantData_html"><div class="ttname"><a href="classSVF_1_1SVFConstantData.html">SVF::SVFConstantData</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00937">SVFValue.h:937</a></div></div>
|
|
1536
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01213">LLVMModule.cpp:1213</a></div></div>
|
|
1527
1537
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_a0bc5a63d8c10da51766007cf40b095e5"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a0bc5a63d8c10da51766007cf40b095e5">SVF::SVFModule::addGlobalSet</a></div><div class="ttdeci">void addGlobalSet(SVFGlobalValue *glob)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00110">SVFModule.h:110</a></div></div>
|
|
1528
|
-
<div class="ttc" id="aclassSVF_1_1SVFMetadataAsValue_html"><div class="ttname"><a href="classSVF_1_1SVFMetadataAsValue.html">SVF::SVFMetadataAsValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1538
|
+
<div class="ttc" id="aclassSVF_1_1SVFMetadataAsValue_html"><div class="ttname"><a href="classSVF_1_1SVFMetadataAsValue.html">SVF::SVFMetadataAsValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01091">SVFValue.h:1091</a></div></div>
|
|
1529
1539
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4b94c96898dbbc71bc1cee04786cf3dc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4b94c96898dbbc71bc1cee04786cf3dc">SVF::LLVMModuleSet::LLVMConst2SVFConst</a></div><div class="ttdeci">LLVMConst2SVFConstMap LLVMConst2SVFConst</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00087">LLVMModule.h:87</a></div></div>
|
|
1530
1540
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a2f8e91c075d90be66412a079fe73e936"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a></div><div class="ttdeci">static void releaseLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00108">LLVMModule.h:108</a></div></div>
|
|
1531
1541
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00199">LLVMModule.h:199</a></div></div>
|
|
1532
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a946d1251501c7e0e33a9210838951258"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">SVF::LLVMModuleSet::collectStructInfo</a></div><div class="ttdeci">StInfo * collectStructInfo(const StructType *structTy, u32_t &numFields)</div><div class="ttdoc">Collect the struct info and set the number of fields after flattening.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1542
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a946d1251501c7e0e33a9210838951258"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a946d1251501c7e0e33a9210838951258">SVF::LLVMModuleSet::collectStructInfo</a></div><div class="ttdeci">StInfo * collectStructInfo(const StructType *structTy, u32_t &numFields)</div><div class="ttdoc">Collect the struct info and set the number of fields after flattening.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01397">LLVMModule.cpp:1397</a></div></div>
|
|
1533
1543
|
<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>
|
|
1534
1544
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_ae64d24569942d7c4b18d2198be4839f3"><div class="ttname"><a href="classSVF_1_1SVFModule.html#ae64d24569942d7c4b18d2198be4839f3">SVF::SVFModule::addConstant</a></div><div class="ttdeci">void addConstant(SVFConstant *cd)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00120">SVFModule.h:120</a></div></div>
|
|
1535
|
-
<div class="ttc" id="aclassSVF_1_1SVFBlackHoleValue_html"><div class="ttname"><a href="classSVF_1_1SVFBlackHoleValue.html">SVF::SVFBlackHoleValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1536
|
-
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_abfe3a1ce5fa364d9db7cd2d0e6a144ff"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">SVF::SVFBasicBlock::addSuccBasicBlock</a></div><div class="ttdeci">void addSuccBasicBlock(const SVFBasicBlock *succ)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1537
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a41e64f3318e2bf368eebe9a104ef6ad9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">SVF::LLVMUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1538
|
-
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_ad865b8440a6e0d5d212798d2213e1e9c"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ad865b8440a6e0d5d212798d2213e1e9c">SVF::SVFFunction::addArgument</a></div><div class="ttdeci">void addArgument(SVFArgument *arg)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1545
|
+
<div class="ttc" id="aclassSVF_1_1SVFBlackHoleValue_html"><div class="ttname"><a href="classSVF_1_1SVFBlackHoleValue.html">SVF::SVFBlackHoleValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01049">SVFValue.h:1049</a></div></div>
|
|
1546
|
+
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_abfe3a1ce5fa364d9db7cd2d0e6a144ff"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#abfe3a1ce5fa364d9db7cd2d0e6a144ff">SVF::SVFBasicBlock::addSuccBasicBlock</a></div><div class="ttdeci">void addSuccBasicBlock(const SVFBasicBlock *succ)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00551">SVFValue.h:551</a></div></div>
|
|
1547
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a41e64f3318e2bf368eebe9a104ef6ad9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">SVF::LLVMUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01210">LLVMUtil.cpp:1210</a></div></div>
|
|
1548
|
+
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_ad865b8440a6e0d5d212798d2213e1e9c"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ad865b8440a6e0d5d212798d2213e1e9c">SVF::SVFFunction::addArgument</a></div><div class="ttdeci">void addArgument(SVFArgument *arg)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00332">SVFValue.h:332</a></div></div>
|
|
1539
1549
|
<div class="ttc" id="aclassSVF_1_1StInfo_html_ae5fad367673315da57a604e64b5889f0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">SVF::StInfo::getNumOfFlattenFields</a></div><div class="ttdeci">u32_t getNumOfFlattenFields() const</div><div class="ttdoc">Return the number of fields after flattening (ignoring array elements)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00231">SVFType.h:231</a></div></div>
|
|
1540
1550
|
<div class="ttc" id="aclassSVF_1_1SVFPointerType_html_aaaa79de3df0f6764bfd3d2e487ea7a09"><div class="ttname"><a href="classSVF_1_1SVFPointerType.html#aaaa79de3df0f6764bfd3d2e487ea7a09">SVF::SVFPointerType::setPtrElementType</a></div><div class="ttdeci">void setPtrElementType(SVFType *_ptrElementType)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00375">SVFType.h:375</a></div></div>
|
|
1541
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a651b6a1cf3665277d2241220bb145aed"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">SVF::LLVMUtil::functionDoesNotRet</a></div><div class="ttdeci">bool functionDoesNotRet(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1551
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a651b6a1cf3665277d2241220bb145aed"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">SVF::LLVMUtil::functionDoesNotRet</a></div><div class="ttdeci">bool functionDoesNotRet(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00118">LLVMUtil.cpp:118</a></div></div>
|
|
1542
1552
|
<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>
|
|
1543
|
-
<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#
|
|
1553
|
+
<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>
|
|
1544
1554
|
<div class="ttc" id="aSVFType_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00582">SVFType.h:582</a></div></div>
|
|
1545
1555
|
<div class="ttc" id="anamespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00053">SVFType.h:53</a></div></div>
|
|
1546
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a0ecff33105811b1e5ebc83afee76da27"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a0ecff33105811b1e5ebc83afee76da27">SVF::LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a></div><div class="ttdeci">void removeUnusedFuncsAndAnnotationsAndGlobalVariables(std::vector< Function * > removedFuncList)</div><div class="ttdoc">Delete unused functions, annotations and global variables in extapi.bc.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1556
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a0ecff33105811b1e5ebc83afee76da27"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a0ecff33105811b1e5ebc83afee76da27">SVF::LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a></div><div class="ttdeci">void removeUnusedFuncsAndAnnotationsAndGlobalVariables(std::vector< Function * > removedFuncList)</div><div class="ttdoc">Delete unused functions, annotations and global variables in extapi.bc.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00608">LLVMUtil.cpp:608</a></div></div>
|
|
1547
1557
|
<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>
|
|
1548
1558
|
<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>
|
|
1549
1559
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_a2fc6b806a436d8fa65863f6cef99e716"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#a2fc6b806a436d8fa65863f6cef99e716">SVF::SVFLoopAndDomInfo::getDomTreeMap</a></div><div class="ttdeci">Map< const SVFBasicBlock *, BBSet > & getDomTreeMap()</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00139">SVFValue.h:139</a></div></div>
|
|
@@ -1555,7 +1565,7 @@ $(function() {
|
|
|
1555
1565
|
<div class="ttc" id="anamespaceSVF_html_ab44d20f806be99699895260b14a942d7"><div class="ttname"><a href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">SVF::DominanceFrontier</a></div><div class="ttdeci">llvm::DominanceFrontier DominanceFrontier</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00133">BasicTypes.h:133</a></div></div>
|
|
1556
1566
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab0c0f321b6bfbfab2e4ff06d81920ab9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">SVF::LLVMModuleSet::getSVFBasicBlock</a></div><div class="ttdeci">SVFBasicBlock * getSVFBasicBlock(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00206">LLVMModule.h:206</a></div></div>
|
|
1557
1567
|
<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>
|
|
1558
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0b46a2a5ff2165d17993a071d9cc82c1"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">SVF::LLVMModuleSet::getLLVMGlobalFunctions</a></div><div class="ttdeci">std::vector< const Function * > getLLVMGlobalFunctions(const GlobalVariable *global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1568
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a0b46a2a5ff2165d17993a071d9cc82c1"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a0b46a2a5ff2165d17993a071d9cc82c1">SVF::LLVMModuleSet::getLLVMGlobalFunctions</a></div><div class="ttdeci">std::vector< const Function * > getLLVMGlobalFunctions(const GlobalVariable *global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00572">LLVMModule.cpp:572</a></div></div>
|
|
1559
1569
|
<div class="ttc" id="aclassSVF_1_1SVFStat_html_aa4950ec26b66a085ad38ac154b789db5"><div class="ttname"><a href="classSVF_1_1SVFStat.html#aa4950ec26b66a085ad38ac154b789db5">SVF::SVFStat::timeOfBuildingLLVMModule</a></div><div class="ttdeci">static double timeOfBuildingLLVMModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00090">SVFStat.h:90</a></div></div>
|
|
1560
1570
|
<div class="ttc" id="anamespaceSVF_html_a0fd33072b099f61eaa642e94ed0c03fc"><div class="ttname"><a href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">SVF::GlobalAlias</a></div><div class="ttdeci">llvm::GlobalAlias GlobalAlias</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
|
|
1561
1571
|
<div class="ttc" id="anamespaceSVF_html_aedd9d023a68dddd66314be63bb8e48d2"><div class="ttname"><a href="namespaceSVF.html#aedd9d023a68dddd66314be63bb8e48d2">SVF::operator></a></div><div class="ttdeci">IntervalValue operator>(const IntervalValue &lhs, const IntervalValue &rhs)</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00581">IntervalValue.h:581</a></div></div>
|
|
@@ -1567,17 +1577,17 @@ $(function() {
|
|
|
1567
1577
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac3e70bd338be3a54330be5dc10321eb3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac3e70bd338be3a54330be5dc10321eb3">SVF::LLVMModuleSet::LLVMValue2SVFOtherValue</a></div><div class="ttdeci">LLVMValue2SVFOtherValueMap LLVMValue2SVFOtherValue</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00088">LLVMModule.h:88</a></div></div>
|
|
1568
1578
|
<div class="ttc" id="aclassSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00047">SVFStat.cpp:47</a></div></div>
|
|
1569
1579
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ac1a9d20d62066ec4e181fad223669e32"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">SVF::LLVMModuleSet::getContext</a></div><div class="ttdeci">LLVMContext & getContext() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00329">LLVMModule.h:329</a></div></div>
|
|
1570
|
-
<div class="ttc" id="aclassSVF_1_1SVFVirtualCallInst_html"><div class="ttname"><a href="classSVF_1_1SVFVirtualCallInst.html">SVF::SVFVirtualCallInst</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1580
|
+
<div class="ttc" id="aclassSVF_1_1SVFVirtualCallInst_html"><div class="ttname"><a href="classSVF_1_1SVFVirtualCallInst.html">SVF::SVFVirtualCallInst</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00773">SVFValue.h:773</a></div></div>
|
|
1571
1581
|
<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>
|
|
1572
|
-
<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#
|
|
1582
|
+
<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>
|
|
1573
1583
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00177">SVFValue.h:177</a></div></div>
|
|
1574
1584
|
<div class="ttc" id="aclassSVF_1_1SVFFunctionType_html"><div class="ttname"><a href="classSVF_1_1SVFFunctionType.html">SVF::SVFFunctionType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00411">SVFType.h:411</a></div></div>
|
|
1575
1585
|
<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>
|
|
1576
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07c785d931cef3c61e3dab4c615770be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">SVF::LLVMUtil::isPtrInUncalledFunction</a></div><div class="ttdeci">bool isPtrInUncalledFunction(const Value *value)</div><div class="ttdoc">Return true if this is value in a dead function (function without any caller)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1586
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07c785d931cef3c61e3dab4c615770be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">SVF::LLVMUtil::isPtrInUncalledFunction</a></div><div class="ttdeci">bool isPtrInUncalledFunction(const Value *value)</div><div class="ttdoc">Return true if this is value in a dead function (function without any caller)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00187">LLVMUtil.cpp:187</a></div></div>
|
|
1577
1587
|
<div class="ttc" id="aclassSVF_1_1SVFArrayType_html"><div class="ttname"><a href="classSVF_1_1SVFArrayType.html">SVF::SVFArrayType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00469">SVFType.h:469</a></div></div>
|
|
1578
1588
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_ac285502846c993f149b6bcc3e04f767e"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#ac285502846c993f149b6bcc3e04f767e">SVF::SVFLoopAndDomInfo::getBBPDomLevel</a></div><div class="ttdeci">const Map< const SVFBasicBlock *, u32_t > & getBBPDomLevel() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00118">SVFValue.h:118</a></div></div>
|
|
1579
1589
|
<div class="ttc" id="aLLVMModule_8cpp_html_a10ab7c7da3a458495d8528b9e90d714b"><div class="ttname"><a href="LLVMModule_8cpp.html#a10ab7c7da3a458495d8528b9e90d714b">SVF_MAIN_FUNC_NAME</a></div><div class="ttdeci">#define SVF_MAIN_FUNC_NAME</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00067">LLVMModule.cpp:67</a></div></div>
|
|
1580
|
-
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a5798ecc742ee74e357d13eea751258c4"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a5798ecc742ee74e357d13eea751258c4">SVF::SVFFunction::getLoopAndDomInfo</a></div><div class="ttdeci">SVFLoopAndDomInfo * getLoopAndDomInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1590
|
+
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a5798ecc742ee74e357d13eea751258c4"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a5798ecc742ee74e357d13eea751258c4">SVF::SVFFunction::getLoopAndDomInfo</a></div><div class="ttdeci">SVFLoopAndDomInfo * getLoopAndDomInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00363">SVFValue.h:363</a></div></div>
|
|
1581
1591
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html_ac2e5c42d0ac92375c88ef5b3f1b65dc4"><div class="ttname"><a href="classSVF_1_1SVFValue.html#ac2e5c42d0ac92375c88ef5b3f1b65dc4">SVF::SVFValue::setPtrInUncalledFunction</a></div><div class="ttdeci">void setPtrInUncalledFunction()</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00228">SVFValue.h:228</a></div></div>
|
|
1582
1592
|
<div class="ttc" id="aBreakConstantExpr_8h_html"><div class="ttname"><a href="BreakConstantExpr_8h.html">BreakConstantExpr.h</a></div></div>
|
|
1583
1593
|
<div class="ttc" id="aclassSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00242">SVFType.h:242</a></div></div>
|
|
@@ -1585,55 +1595,58 @@ $(function() {
|
|
|
1585
1595
|
<div class="ttc" id="aclassSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00132">SVFType.h:132</a></div></div>
|
|
1586
1596
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aee80b29e5246e3eaa0e30e165346101f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aee80b29e5246e3eaa0e30e165346101f">SVF::LLVMModuleSet::FunDeclToDefMap</a></div><div class="ttdeci">FunDeclToDefMapTy FunDeclToDefMap</div><div class="ttdoc">Function declaration to function definition map.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00075">LLVMModule.h:75</a></div></div>
|
|
1587
1597
|
<div class="ttc" id="aclassSVF_1_1SVFStructType_html"><div class="ttname"><a href="classSVF_1_1SVFStructType.html">SVF::SVFStructType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00436">SVFType.h:436</a></div></div>
|
|
1588
|
-
<div class="ttc" id="aclassSVF_1_1SVFConstant_html"><div class="ttname"><a href="classSVF_1_1SVFConstant.html">SVF::SVFConstant</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1598
|
+
<div class="ttc" id="aclassSVF_1_1SVFConstant_html"><div class="ttname"><a href="classSVF_1_1SVFConstant.html">SVF::SVFConstant</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00833">SVFValue.h:833</a></div></div>
|
|
1589
1599
|
<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>
|
|
1590
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3a23aa54459a068e16c96e5b5eb72f77"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">SVF::LLVMUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1591
|
-
<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#
|
|
1600
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3a23aa54459a068e16c96e5b5eb72f77"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">SVF::LLVMUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01130">LLVMUtil.cpp:1130</a></div></div>
|
|
1601
|
+
<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>
|
|
1592
1602
|
<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>
|
|
1593
1603
|
<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>
|
|
1594
1604
|
<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>
|
|
1595
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa7992d03a48ec79bde169ddceb6ef67b"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa7992d03a48ec79bde169ddceb6ef67b">SVF::LLVMModuleSet::loadExtAPIModules</a></div><div class="ttdeci">void loadExtAPIModules(std::unique_ptr< LLVMContext > context=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1596
|
-
<div class="ttc" id="aclassSVF_1_1SVFOtherValue_html"><div class="ttname"><a href="classSVF_1_1SVFOtherValue.html">SVF::SVFOtherValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1597
|
-
<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#
|
|
1605
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa7992d03a48ec79bde169ddceb6ef67b"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa7992d03a48ec79bde169ddceb6ef67b">SVF::LLVMModuleSet::loadExtAPIModules</a></div><div class="ttdeci">void loadExtAPIModules(std::unique_ptr< LLVMContext > context=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00543">LLVMModule.cpp:543</a></div></div>
|
|
1606
|
+
<div class="ttc" id="aclassSVF_1_1SVFOtherValue_html"><div class="ttname"><a href="classSVF_1_1SVFOtherValue.html">SVF::SVFOtherValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01071">SVFValue.h:1071</a></div></div>
|
|
1607
|
+
<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>
|
|
1598
1608
|
<div class="ttc" id="aclassSVF_1_1Options_html_a3a718b0a27c2d13878c0718af97ad73d"><div class="ttname"><a href="classSVF_1_1Options.html#a3a718b0a27c2d13878c0718af97ad73d">SVF::Options::SVFMain</a></div><div class="ttdeci">static const Option< bool > SVFMain</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00214">Options.h:214</a></div></div>
|
|
1599
1609
|
<div class="ttc" id="aBasicTypes_8h_html"><div class="ttname"><a href="BasicTypes_8h.html">BasicTypes.h</a></div></div>
|
|
1600
1610
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a9fe3fa15a6a0ec25864cb8439a45596e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">SVF::LLVMModuleSet::getMainLLVMModule</a></div><div class="ttdeci">Module * getMainLLVMModule() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00324">LLVMModule.h:324</a></div></div>
|
|
1601
|
-
<div class="ttc" id="aclassSVF_1_1SVFConstantInt_html"><div class="ttname"><a href="classSVF_1_1SVFConstantInt.html">SVF::SVFConstantInt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1602
|
-
<div class="ttc" id="aclassSVF_1_1SVFConstantFP_html"><div class="ttname"><a href="classSVF_1_1SVFConstantFP.html">SVF::SVFConstantFP</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1603
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a298966366b02d0a34f409c2c77da3789"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">SVF::LLVMModuleSet::loadModules</a></div><div class="ttdeci">void loadModules(const std::vector< std::string > &moduleNameVec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1604
|
-
<div class="ttc" id="
|
|
1611
|
+
<div class="ttc" id="aclassSVF_1_1SVFConstantInt_html"><div class="ttname"><a href="classSVF_1_1SVFConstantInt.html">SVF::SVFConstantInt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00966">SVFValue.h:966</a></div></div>
|
|
1612
|
+
<div class="ttc" id="aclassSVF_1_1SVFConstantFP_html"><div class="ttname"><a href="classSVF_1_1SVFConstantFP.html">SVF::SVFConstantFP</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01000">SVFValue.h:1000</a></div></div>
|
|
1613
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a298966366b02d0a34f409c2c77da3789"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a298966366b02d0a34f409c2c77da3789">SVF::LLVMModuleSet::loadModules</a></div><div class="ttdeci">void loadModules(const std::vector< std::string > &moduleNameVec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00488">LLVMModule.cpp:488</a></div></div>
|
|
1614
|
+
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_abd458bb5a035d3f7db32fac5f01b57f3"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#abd458bb5a035d3f7db32fac5f01b57f3">SVF::SVFFunction::setExitBlock</a></div><div class="ttdeci">void setExitBlock(SVFBasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00193">SVFValue.cpp:193</a></div></div>
|
|
1615
|
+
<div class="ttc" id="aclassSVF_1_1SVFGlobalValue_html"><div class="ttname"><a href="classSVF_1_1SVFGlobalValue.html">SVF::SVFGlobalValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00856">SVFValue.h:856</a></div></div>
|
|
1605
1616
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ad06a92bf8bc556de742e0ffdf79ffafe"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ad06a92bf8bc556de742e0ffdf79ffafe">SVF::LLVMModuleSet::cxts</a></div><div class="ttdeci">std::unique_ptr< LLVMContext > cxts</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
|
|
1606
1617
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_a1357c876eccedd58b3abe68875b3a570"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVF::SVFModule::pagReadFromTXT</a></div><div class="ttdeci">static bool pagReadFromTXT()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00098">SVFModule.h:98</a></div></div>
|
|
1607
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a52853bd34a394882c6fd0fc73739c9f2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">SVF::LLVMModuleSet::collectSimpleTypeInfo</a></div><div class="ttdeci">StInfo * collectSimpleTypeInfo(const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1618
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a52853bd34a394882c6fd0fc73739c9f2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a52853bd34a394882c6fd0fc73739c9f2">SVF::LLVMModuleSet::collectSimpleTypeInfo</a></div><div class="ttdeci">StInfo * collectSimpleTypeInfo(const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01454">LLVMModule.cpp:1454</a></div></div>
|
|
1608
1619
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae365189769640adb919a23c36978e5e2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae365189769640adb919a23c36978e5e2">SVF::LLVMModuleSet::owned_modules</a></div><div class="ttdeci">std::vector< std::unique_ptr< Module > > owned_modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00071">LLVMModule.h:71</a></div></div>
|
|
1620
|
+
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a66f51cd41e93ad055c4a0c2874e73fae"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a66f51cd41e93ad055c4a0c2874e73fae">SVF::SVFBasicBlock::getSuccessors</a></div><div class="ttdeci">const std::vector< const SVFBasicBlock * > & getSuccessors() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00612">SVFValue.h:612</a></div></div>
|
|
1609
1621
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a43832e93a42ae43d44b0cc160981678f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a43832e93a42ae43d44b0cc160981678f">SVF::LLVMModuleSet::svfModule</a></div><div class="ttdeci">SVFModule * svfModule</div><div class="ttdoc">Borrowed from singleton SVFModule::svfModule.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
1610
1622
|
<div class="ttc" id="aSVFModule_8h_html"><div class="ttname"><a href="SVFModule_8h.html">SVFModule.h</a></div></div>
|
|
1611
1623
|
<div class="ttc" id="aclassSVF_1_1StInfo_html_a1a07c2b1415c29d7d70791c6dfe602a3"><div class="ttname"><a href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">SVF::StInfo::setNumOfFieldsAndElems</a></div><div class="ttdeci">void setNumOfFieldsAndElems(u32_t nf, u32_t ne)</div><div class="ttdoc">Set number of fields and elements of an aggregate.</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00218">SVFType.h:218</a></div></div>
|
|
1612
1624
|
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a58a764c27354d5f9b70995d30de65f1d"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">SVF::ExtAPI::getExtAPI</a></div><div class="ttdeci">static ExtAPI * getExtAPI()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00040">ExtAPI.cpp:40</a></div></div>
|
|
1613
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9e0c786488dfdc4605d4cbcf9943c85a"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">SVF::LLVMUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
1614
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8af6b911b728713f66f7c809d5c0fbf1"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8af6b911b728713f66f7c809d5c0fbf1">SVF::LLVMModuleSet::addSVFMain</a></div><div class="ttdeci">void addSVFMain()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1615
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8ba9092747108e0289014d52465a692d"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">SVF::LLVMModuleSet::initDomTree</a></div><div class="ttdeci">void initDomTree(SVFFunction *func, const Function *f)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1625
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9e0c786488dfdc4605d4cbcf9943c85a"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">SVF::LLVMUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00421">LLVMUtil.h:421</a></div></div>
|
|
1626
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8af6b911b728713f66f7c809d5c0fbf1"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8af6b911b728713f66f7c809d5c0fbf1">SVF::LLVMModuleSet::addSVFMain</a></div><div class="ttdeci">void addSVFMain()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00661">LLVMModule.cpp:661</a></div></div>
|
|
1627
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8ba9092747108e0289014d52465a692d"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8ba9092747108e0289014d52465a692d">SVF::LLVMModuleSet::initDomTree</a></div><div class="ttdeci">void initDomTree(SVFFunction *func, const Function *f)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00370">LLVMModule.cpp:370</a></div></div>
|
|
1616
1628
|
<div class="ttc" id="anamespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
|
|
1617
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab1b4c565ae6be788b934defc21a5cfaf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">SVF::LLVMUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1629
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab1b4c565ae6be788b934defc21a5cfaf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">SVF::LLVMUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00942">LLVMUtil.cpp:942</a></div></div>
|
|
1618
1630
|
<div class="ttc" id="anamespaceSVF_html_a86863d104a3930b3a806935d92ddbf30"><div class="ttname"><a href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">SVF::SMDiagnostic</a></div><div class="ttdeci">llvm::SMDiagnostic SMDiagnostic</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00088">BasicTypes.h:88</a></div></div>
|
|
1619
1631
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae19e38054c55d5822dfc83a12f12aa60"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae19e38054c55d5822dfc83a12f12aa60">SVF::LLVMModuleSet::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00335">LLVMModule.h:335</a></div></div>
|
|
1620
1632
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00309">SVFUtil.h:309</a></div></div>
|
|
1621
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a2fdc1bd61b8f6cdf6c07a5059b641b04"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a2fdc1bd61b8f6cdf6c07a5059b641b04">SVF::LLVMModuleSet::preProcessBCs</a></div><div class="ttdeci">static void preProcessBCs(std::vector< std::string > &moduleNameVec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1633
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a2fdc1bd61b8f6cdf6c07a5059b641b04"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a2fdc1bd61b8f6cdf6c07a5059b641b04">SVF::LLVMModuleSet::preProcessBCs</a></div><div class="ttdeci">static void preProcessBCs(std::vector< std::string > &moduleNameVec)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00467">LLVMModule.cpp:467</a></div></div>
|
|
1622
1634
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a428bd75b33fab60988d8758090712f29"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a428bd75b33fab60988d8758090712f29">SVF::LLVMUtil::isArgOfUncalledFunction</a></div><div class="ttdeci">bool isArgOfUncalledFunction(const Value *val)</div><div class="ttdoc">Return true if the argument in a function does not have a caller.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00201">LLVMUtil.h:201</a></div></div>
|
|
1623
|
-
<div class="ttc" id="aclassSVF_1_1SVFCallInst_html_ac979b49b449b97b2a23f195cb107ec77"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">SVF::SVFCallInst::addArgument</a></div><div class="ttdeci">void addArgument(const SVFValue *a)</div><div class="ttdoc">attributes to be set only through Module builders e.g., LLVMModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1635
|
+
<div class="ttc" id="aclassSVF_1_1SVFCallInst_html_ac979b49b449b97b2a23f195cb107ec77"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#ac979b49b449b97b2a23f195cb107ec77">SVF::SVFCallInst::addArgument</a></div><div class="ttdeci">void addArgument(const SVFValue *a)</div><div class="ttdoc">attributes to be set only through Module builders e.g., LLVMModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00713">SVFValue.h:713</a></div></div>
|
|
1624
1636
|
<div class="ttc" id="anamespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00134">BasicTypes.h:134</a></div></div>
|
|
1625
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa8de934358332505d4805db137d8ec29"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">SVF::LLVMModuleSet::collectArrayInfo</a></div><div class="ttdeci">StInfo * collectArrayInfo(const ArrayType *T)</div><div class="ttdoc">Collect the array info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1637
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa8de934358332505d4805db137d8ec29"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa8de934358332505d4805db137d8ec29">SVF::LLVMModuleSet::collectArrayInfo</a></div><div class="ttdeci">StInfo * collectArrayInfo(const ArrayType *T)</div><div class="ttdoc">Collect the array info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01334">LLVMModule.cpp:1334</a></div></div>
|
|
1626
1638
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a4ca8c4678a7fefe26372fc1f4b2880fd"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a4ca8c4678a7fefe26372fc1f4b2880fd">SVF::LLVMModuleSet::createSVFDataStructure</a></div><div class="ttdeci">void createSVFDataStructure()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00153">LLVMModule.cpp:153</a></div></div>
|
|
1627
1639
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a7f8e61cf5d838d7a2e862bc6955f16be"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7f8e61cf5d838d7a2e862bc6955f16be">SVF::LLVMModuleSet::SVFValue2LLVMValue</a></div><div class="ttdeci">SVFValue2LLVMValueMap SVFValue2LLVMValue</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00089">LLVMModule.h:89</a></div></div>
|
|
1628
1640
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a72502f7f536418621485e90ab98c2016"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVF::SVFUtil::move</a></div><div class="ttdeci">constexpr std::remove_reference< T >::type && move(T &&t) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00621">SVFUtil.h:621</a></div></div>
|
|
1629
1641
|
<div class="ttc" id="anamespaceSVF_html_a1c7c7ac12791c0ae386283c0a4f127ba"><div class="ttname"><a href="namespaceSVF.html#a1c7c7ac12791c0ae386283c0a4f127ba">SVF::raw_fd_ostream</a></div><div class="ttdeci">llvm::raw_fd_ostream raw_fd_ostream</div><div class="ttdoc">LLVM outputs.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00261">BasicTypes.h:261</a></div></div>
|
|
1630
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a610a7777a48132caadec167c8109f044"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a610a7777a48132caadec167c8109f044">SVF::LLVMModuleSet::getLLVMType</a></div><div class="ttdeci">const Type * getLLVMType(const SVFType *T) const</div><div class="ttdoc">Get LLVM Type.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1642
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a610a7777a48132caadec167c8109f044"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a610a7777a48132caadec167c8109f044">SVF::LLVMModuleSet::getLLVMType</a></div><div class="ttdeci">const Type * getLLVMType(const SVFType *T) const</div><div class="ttdoc">Get LLVM Type.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01199">LLVMModule.cpp:1199</a></div></div>
|
|
1631
1643
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_ae37546be7304c66b4eca2654d995eaa7"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#ae37546be7304c66b4eca2654d995eaa7">SVF::SVFLoopAndDomInfo::getDomFrontierMap</a></div><div class="ttdeci">const Map< const SVFBasicBlock *, BBSet > & getDomFrontierMap() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00075">SVFValue.h:75</a></div></div>
|
|
1632
1644
|
<div class="ttc" id="aclassSVF_1_1StInfo_html_a03bfeee0406c7e54557e74f3a8e848b7"><div class="ttname"><a href="classSVF_1_1StInfo.html#a03bfeee0406c7e54557e74f3a8e848b7">SVF::StInfo::getFlattenElementTypes</a></div><div class="ttdeci">std::vector< const SVFType * > & getFlattenElementTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00188">SVFType.h:188</a></div></div>
|
|
1633
1645
|
<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>
|
|
1634
1646
|
<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>
|
|
1635
1647
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_aed2f125f7b8c21092b23d9727568ba50"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#aed2f125f7b8c21092b23d9727568ba50">SVF::SVFLoopAndDomInfo::addToBB2LoopMap</a></div><div class="ttdeci">void addToBB2LoopMap(const SVFBasicBlock *bb, const SVFBasicBlock *loopBB)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00103">SVFValue.h:103</a></div></div>
|
|
1636
1648
|
<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>
|
|
1649
|
+
<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>
|
|
1637
1650
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5552135a27684cbe4d2a5ed346f64644"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5552135a27684cbe4d2a5ed346f64644">SVF::LLVMModuleSet::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00068">LLVMModule.h:68</a></div></div>
|
|
1638
1651
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00343">SymbolTableInfo.h:343</a></div></div>
|
|
1639
1652
|
<div class="ttc" id="anamespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set< Key, Compare, Allocator > OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00106">SVFType.h:106</a></div></div>
|
|
@@ -1643,16 +1656,16 @@ $(function() {
|
|
|
1643
1656
|
<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>
|
|
1644
1657
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00040">SVFModule.h:40</a></div></div>
|
|
1645
1658
|
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html">SVF::SymbolTableBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00042">SymbolTableBuilder.h:42</a></div></div>
|
|
1646
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a25821b0feeb3b08e00ec9d444520b727"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">SVF::LLVMModuleSet::getSVFConstantData</a></div><div class="ttdeci">SVFConstantData * getSVFConstantData(const ConstantData *cd)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1659
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a25821b0feeb3b08e00ec9d444520b727"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a25821b0feeb3b08e00ec9d444520b727">SVF::LLVMModuleSet::getSVFConstantData</a></div><div class="ttdeci">SVFConstantData * getSVFConstantData(const ConstantData *cd)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01094">LLVMModule.cpp:1094</a></div></div>
|
|
1647
1660
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
|
|
1648
1661
|
<div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html">SVF::SymbolTableInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00047">SymbolTableInfo.h:47</a></div></div>
|
|
1649
1662
|
<div class="ttc" id="aclassSVF_1_1SVFIntegerType_html"><div class="ttname"><a href="classSVF_1_1SVFIntegerType.html">SVF::SVFIntegerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00383">SVFType.h:383</a></div></div>
|
|
1650
1663
|
<div class="ttc" id="aclassSVF_1_1SVFStat_html_ae89293bc063bdc74a988e9c37c70321e"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">SVF::SVFStat::timeOfBuildingSymbolTable</a></div><div class="ttdeci">static double timeOfBuildingSymbolTable</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00091">SVFStat.h:91</a></div></div>
|
|
1651
1664
|
<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>
|
|
1652
1665
|
<div class="ttc" id="aclassSVF_1_1SVFType_html_a3ddabbd763acaaca28cacbabe5bc7f3b"><div class="ttname"><a href="classSVF_1_1SVFType.html#a3ddabbd763acaaca28cacbabe5bc7f3b">SVF::SVFType::setPointerTo</a></div><div class="ttdeci">void setPointerTo(const SVFPointerType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00292">SVFType.h:292</a></div></div>
|
|
1653
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a74256f36f0fdc242df9729906c34efbc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">SVF::LLVMModuleSet::getOtherSVFConstant</a></div><div class="ttdeci">SVFConstant * getOtherSVFConstant(const Constant *oc)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1666
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a74256f36f0fdc242df9729906c34efbc"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a74256f36f0fdc242df9729906c34efbc">SVF::LLVMModuleSet::getOtherSVFConstant</a></div><div class="ttdeci">SVFConstant * getOtherSVFConstant(const Constant *oc)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01141">LLVMModule.cpp:1141</a></div></div>
|
|
1654
1667
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html">SVF::LLVMModuleSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00044">LLVMModule.h:44</a></div></div>
|
|
1655
|
-
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a0d5031bd11b6372803082111ec2cb4f6"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">SVF::SVFFunction::addBasicBlock</a></div><div class="ttdeci">void addBasicBlock(const SVFBasicBlock *bb)</div><div class="ttdoc">
|
|
1668
|
+
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a0d5031bd11b6372803082111ec2cb4f6"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a0d5031bd11b6372803082111ec2cb4f6">SVF::SVFFunction::addBasicBlock</a></div><div class="ttdeci">void addBasicBlock(const SVFBasicBlock *bb)</div><div class="ttdoc">a 'single' basic block having no successors and containing return instruction in a function</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00327">SVFValue.h:327</a></div></div>
|
|
1656
1669
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00213">LLVMModule.h:213</a></div></div>
|
|
1657
1670
|
<div class="ttc" id="anamespaceSVF_html_a67f3f86344f028cacfbeb08caaf7bb0f"><div class="ttname"><a href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">SVF::GlobalValue</a></div><div class="ttdeci">llvm::GlobalValue GlobalValue</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00086">BasicTypes.h:86</a></div></div>
|
|
1658
1671
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a4550f2fb815882edfb666ac818792064"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4550f2fb815882edfb666ac818792064">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(const std::string &msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00099">SVFUtil.cpp:99</a></div></div>
|
|
@@ -1662,39 +1675,39 @@ $(function() {
|
|
|
1662
1675
|
<div class="ttc" id="acJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
1663
1676
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_abbca1044dc59299224598ec2ba17fe7e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#abbca1044dc59299224598ec2ba17fe7e">SVF::LLVMModuleSet::isCalledExtFunction</a></div><div class="ttdeci">bool isCalledExtFunction(Function *func)</div><div class="ttdoc">Remove unused function in extapi.bc module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00241">LLVMModule.h:241</a></div></div>
|
|
1664
1677
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9bd6f54920929e5ad35102ba2f2223da"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">SVF::LLVMUtil::getFunReachableBBs</a></div><div class="ttdeci">void getFunReachableBBs(const Function *svfFun, std::vector< const SVFBasicBlock * > &bbs)</div><div class="ttdoc">Get reachable basic block from function entry.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00069">LLVMUtil.cpp:69</a></div></div>
|
|
1665
|
-
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a38f8fdd93ef7222f408cbbb2a98a1cd5"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">SVF::SVFBasicBlock::addPredBasicBlock</a></div><div class="ttdeci">void addPredBasicBlock(const SVFBasicBlock *pred)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1678
|
+
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a38f8fdd93ef7222f408cbbb2a98a1cd5"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a38f8fdd93ef7222f408cbbb2a98a1cd5">SVF::SVFBasicBlock::addPredBasicBlock</a></div><div class="ttdeci">void addPredBasicBlock(const SVFBasicBlock *pred)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00556">SVFValue.h:556</a></div></div>
|
|
1666
1679
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_ad07f95e790b5c3a50c864155aa20a083"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#ad07f95e790b5c3a50c864155aa20a083">SVF::SVFLoopAndDomInfo::getPostDomTreeMap</a></div><div class="ttdeci">const Map< const SVFBasicBlock *, BBSet > & getPostDomTreeMap() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00108">SVFValue.h:108</a></div></div>
|
|
1667
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a7d61f479f52e1dc71a4ae7a4d62f3b6a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">SVF::LLVMModuleSet::setValueAttr</a></div><div class="ttdeci">void setValueAttr(const Value *val, SVFValue *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1680
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a7d61f479f52e1dc71a4ae7a4d62f3b6a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a7d61f479f52e1dc71a4ae7a4d62f3b6a">SVF::LLVMModuleSet::setValueAttr</a></div><div class="ttdeci">void setValueAttr(const Value *val, SVFValue *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01068">LLVMModule.cpp:1068</a></div></div>
|
|
1668
1681
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_ad478ac88bc07cf4d6d0ad3517b2c4ab3"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVF::SVFLoopAndDomInfo::BBSet</a></div><div class="ttdeci">Set< const SVFBasicBlock * > BBSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00055">SVFValue.h:55</a></div></div>
|
|
1669
|
-
<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#
|
|
1682
|
+
<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>
|
|
1670
1683
|
<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>
|
|
1671
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1672
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1684
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01176">LLVMModule.cpp:1176</a></div></div>
|
|
1685
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a1f6cc76c996a0577b20b8cedd83fff92"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a1f6cc76c996a0577b20b8cedd83fff92">SVF::LLVMModuleSet::collectTypeInfo</a></div><div class="ttdeci">StInfo * collectTypeInfo(const Type *ty)</div><div class="ttdoc">Collect a type info.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01233">LLVMModule.cpp:1233</a></div></div>
|
|
1673
1686
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a067661e0049314779a44c9600420820f"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a067661e0049314779a44c9600420820f">SVF::LLVMModuleSet::LLVMType2SVFType</a></div><div class="ttdeci">LLVMType2SVFTypeMap LLVMType2SVFType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00090">LLVMModule.h:90</a></div></div>
|
|
1674
|
-
<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#
|
|
1675
|
-
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8b5f24c873db1f6a0614d1dac48bb4bb"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">SVF::LLVMModuleSet::prePassSchedule</a></div><div class="ttdeci">void prePassSchedule()</div><div class="ttdoc">Invoke llvm passes to modify module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#
|
|
1687
|
+
<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>
|
|
1688
|
+
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a8b5f24c873db1f6a0614d1dac48bb4bb"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8b5f24c873db1f6a0614d1dac48bb4bb">SVF::LLVMModuleSet::prePassSchedule</a></div><div class="ttdeci">void prePassSchedule()</div><div class="ttdoc">Invoke llvm passes to modify module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00443">LLVMModule.cpp:443</a></div></div>
|
|
1676
1689
|
<div class="ttc" id="aclassSVF_1_1ExtAPI_html_a26bc352dbfd1b2fe34106a73f1f6d50c"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">SVF::ExtAPI::getExtBcPath</a></div><div class="ttdeci">std::string getExtBcPath()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00123">ExtAPI.cpp:123</a></div></div>
|
|
1677
|
-
<div class="ttc" id="aclassSVF_1_1SVFArgument_html"><div class="ttname"><a href="classSVF_1_1SVFArgument.html">SVF::SVFArgument</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1690
|
+
<div class="ttc" id="aclassSVF_1_1SVFArgument_html"><div class="ttname"><a href="classSVF_1_1SVFArgument.html">SVF::SVFArgument</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00897">SVFValue.h:897</a></div></div>
|
|
1678
1691
|
<div class="ttc" id="anamespaceSVF_html_ad49e4222ba46d9490b87a80df8b46800"><div class="ttname"><a href="namespaceSVF.html#ad49e4222ba46d9490b87a80df8b46800">SVF::ConstantFP</a></div><div class="ttdeci">llvm::ConstantFP ConstantFP</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00124">BasicTypes.h:124</a></div></div>
|
|
1679
|
-
<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#
|
|
1692
|
+
<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>
|
|
1680
1693
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a023ea6f179433fa4d007c98ddc38e3c5"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a023ea6f179433fa4d007c98ddc38e3c5">SVF::LLVMModuleSet::addOtherValueMap</a></div><div class="ttdeci">void addOtherValueMap(const Value *ov, SVFOtherValue *svfov)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00184">LLVMModule.h:184</a></div></div>
|
|
1681
1694
|
<div class="ttc" id="aclassSVF_1_1SVFOtherType_html"><div class="ttname"><a href="classSVF_1_1SVFOtherType.html">SVF::SVFOtherType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00509">SVFType.h:509</a></div></div>
|
|
1682
1695
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a3820263a157cffcfd78ad2894e9bcc5a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3820263a157cffcfd78ad2894e9bcc5a">SVF::LLVMModuleSet::buildSVFModule</a></div><div class="ttdeci">static SVFModule * buildSVFModule(Module &mod, std::unique_ptr< LLVMContext > context)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00080">LLVMModule.cpp:80</a></div></div>
|
|
1683
1696
|
<div class="ttc" id="aSVFType_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DBUG model of each pass.</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00576">SVFType.h:576</a></div></div>
|
|
1684
1697
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a024f5de163fde6f63cb2d762b4b28d8a"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a024f5de163fde6f63cb2d762b4b28d8a">SVF::LLVMModuleSet::createSVFFunction</a></div><div class="ttdeci">void createSVFFunction(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00223">LLVMModule.cpp:223</a></div></div>
|
|
1685
|
-
<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#
|
|
1698
|
+
<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>
|
|
1686
1699
|
<div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_aef0bb1e88d0b69313c673318f7b7cb5f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#aef0bb1e88d0b69313c673318f7b7cb5f">SVF::SymbolTableBuilder::buildMemModel</a></div><div class="ttdeci">void buildMemModel(SVFModule *svfModule)</div><div class="ttdoc">Start building memory model.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00074">SymbolTableBuilder.cpp:74</a></div></div>
|
|
1687
1700
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_a48d7f0643bb228701dcabb88ef541fca"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a48d7f0643bb228701dcabb88ef541fca">SVF::SVFModule::addOtherValue</a></div><div class="ttdeci">void addOtherValue(SVFOtherValue *ov)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00124">SVFModule.h:124</a></div></div>
|
|
1688
1701
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_acc409e328f641a2c9512beeb727f58c7"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#acc409e328f641a2c9512beeb727f58c7">SVF::SVFLoopAndDomInfo::setReachableBBs</a></div><div class="ttdeci">void setReachableBBs(BBList &bbs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00160">SVFValue.h:160</a></div></div>
|
|
1689
1702
|
<div class="ttc" id="anamespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00102">SVFType.h:102</a></div></div>
|
|
1690
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8cd4d6410017b9e5f47f2f88450b78d8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">SVF::LLVMUtil::getFunAnnotations</a></div><div class="ttdeci">std::vector< std::string > getFunAnnotations(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1703
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8cd4d6410017b9e5f47f2f88450b78d8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8cd4d6410017b9e5f47f2f88450b78d8">SVF::LLVMUtil::getFunAnnotations</a></div><div class="ttdeci">std::vector< std::string > getFunAnnotations(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00456">LLVMUtil.cpp:456</a></div></div>
|
|
1691
1704
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a3204400c52ec55da70418471d5c9bad5"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3204400c52ec55da70418471d5c9bad5">SVF::LLVMModuleSet::preProcessed</a></div><div class="ttdeci">static bool preProcessed</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00067">LLVMModule.h:67</a></div></div>
|
|
1692
1705
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html_ab930bb5449538c4d0da1297a103788a1"><div class="ttname"><a href="classSVF_1_1SVFModule.html#ab930bb5449538c4d0da1297a103788a1">SVF::SVFModule::getSVFModule</a></div><div class="ttdeci">static SVFModule * getSVFModule()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00060">SVFModule.cpp:60</a></div></div>
|
|
1693
1706
|
<div class="ttc" id="aSymbolTableBuilder_8h_html"><div class="ttname"><a href="SymbolTableBuilder_8h.html">SymbolTableBuilder.h</a></div></div>
|
|
1694
|
-
<div class="ttc" id="aclassSVF_1_1SVFConstantNullPtr_html"><div class="ttname"><a href="classSVF_1_1SVFConstantNullPtr.html">SVF::SVFConstantNullPtr</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#
|
|
1707
|
+
<div class="ttc" id="aclassSVF_1_1SVFConstantNullPtr_html"><div class="ttname"><a href="classSVF_1_1SVFConstantNullPtr.html">SVF::SVFConstantNullPtr</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01027">SVFValue.h:1027</a></div></div>
|
|
1695
1708
|
<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>
|
|
1696
1709
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a3cbba2eb702a3481478b2590dfffa352"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a3cbba2eb702a3481478b2590dfffa352">SVF::LLVMModuleSet::getSVFGlobalValue</a></div><div class="ttdeci">SVFGlobalValue * getSVFGlobalValue(const GlobalValue *g) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00227">LLVMModule.h:227</a></div></div>
|
|
1697
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a718c8ec79f36cef5df2f4530541f2770"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">SVF::LLVMUtil::getVCallIdx</a></div><div class="ttdeci">s32_t getVCallIdx(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1710
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a718c8ec79f36cef5df2f4530541f2770"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">SVF::LLVMUtil::getVCallIdx</a></div><div class="ttdeci">s32_t getVCallIdx(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01221">LLVMUtil.cpp:1221</a></div></div>
|
|
1698
1711
|
<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>
|
|
1699
1712
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a172084437a8450314a17f7085a32b5d2"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a172084437a8450314a17f7085a32b5d2">SVF::LLVMModuleSet::addInstructionMap</a></div><div class="ttdeci">void addInstructionMap(const Instruction *inst, SVFInstruction *svfInst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00159">LLVMModule.h:159</a></div></div>
|
|
1700
1713
|
<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>
|