svf-tools 1.0.402 → 1.0.405
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CHG_8h_source.html +5 -6
- package/SVF-doxygen/html/html/CPPUtil_8cpp.html +3 -3
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CSC_8h_source.html +3 -3
- package/SVF-doxygen/html/html/Conditions_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ICFG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +7 -7
- package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +2 -2
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +10 -10
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -3
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CHEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CSC-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +1 -2
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +48 -48
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +63 -63
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge.html +1 -1
- package/SVF-doxygen/html/html/functions_a.html +6 -6
- package/SVF-doxygen/html/html/functions_b.html +1 -1
- package/SVF-doxygen/html/html/functions_f.html +2 -2
- package/SVF-doxygen/html/html/functions_func.html +6 -6
- package/SVF-doxygen/html/html/functions_func_f.html +1 -1
- package/SVF-doxygen/html/html/functions_func_g.html +9 -9
- package/SVF-doxygen/html/html/functions_func_i.html +1 -1
- package/SVF-doxygen/html/html/functions_func_s.html +2 -2
- package/SVF-doxygen/html/html/functions_func_v.html +1 -1
- package/SVF-doxygen/html/html/functions_g.html +9 -9
- package/SVF-doxygen/html/html/functions_i.html +1 -1
- package/SVF-doxygen/html/html/functions_l.html +1 -1
- package/SVF-doxygen/html/html/functions_n.html +1 -1
- package/SVF-doxygen/html/html/functions_s.html +3 -3
- package/SVF-doxygen/html/html/functions_type_n.html +1 -1
- package/SVF-doxygen/html/html/functions_type_s.html +1 -1
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_b.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_v.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF.html +5 -5
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +4 -4
- package/SVF-doxygen/html/html/namespacemembers_s.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_type_s.html +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +4 -4
- package/SVF-doxygen/html/html/search/all_13.js +4 -4
- package/SVF-doxygen/html/html/search/all_16.js +3 -3
- package/SVF-doxygen/html/html/search/all_2.js +1 -1
- package/SVF-doxygen/html/html/search/all_6.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +5 -5
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +4 -4
- package/SVF-doxygen/html/html/search/functions_10.js +2 -2
- package/SVF-doxygen/html/html/search/functions_13.js +1 -1
- package/SVF-doxygen/html/html/search/functions_5.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +5 -5
- package/SVF-doxygen/html/html/search/functions_8.js +1 -1
- package/SVF-doxygen/html/html/search/functions_a.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_16.js +2 -2
- package/SVF-doxygen/html/html/search/variables_2.js +1 -1
- package/SVF-doxygen/html/html/search/variables_6.js +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +2 -2
- package/include/Graphs/CHG.h +6 -6
- package/include/Graphs/ConsGEdge.h +1 -1
- package/include/Graphs/ICFG.h +1 -1
- package/include/Graphs/ICFGEdge.h +3 -3
- package/include/MemoryModel/LocationSet.h +5 -5
- package/include/MemoryModel/PAGBuilderFromFile.h +1 -1
- package/include/MemoryModel/SVFIR.h +1 -1
- package/include/MemoryModel/SVFStatements.h +4 -4
- package/include/MemoryModel/SVFVariables.h +2 -2
- package/include/MemoryModel/SymbolTableInfo.h +1 -1
- package/include/SVF-FE/SVFIRBuilder.h +2 -2
- package/include/Util/IRAnnotator.h +2 -2
- package/include/Util/SVFBasicTypes.h +1 -1
- package/include/WPA/AndersenSFR.h +1 -1
- package/include/WPA/CSC.h +1 -1
- package/lib/Graphs/ICFG.cpp +1 -1
- package/lib/MTA/MHP.cpp +2 -2
- package/lib/MemoryModel/LocationSet.cpp +3 -3
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +2 -2
- package/lib/MemoryModel/SVFIR.cpp +1 -1
- package/lib/MemoryModel/SymbolTableInfo.cpp +3 -3
- package/lib/SVF-FE/CPPUtil.cpp +6 -6
- package/lib/SVF-FE/ICFGBuilder.cpp +1 -1
- package/lib/SVF-FE/LLVMUtil.cpp +1 -1
- package/lib/SVF-FE/SVFIRBuilder.cpp +17 -10
- package/lib/SVF-FE/SymbolTableBuilder.cpp +1 -1
- package/lib/Util/Conditions.cpp +1 -1
- package/lib/Util/ExtAPI.cpp +13 -0
- package/lib/Util/TypeBasedHeapCloning.cpp +1 -1
- package/lib/WPA/AndersenSFR.cpp +6 -6
- package/lib/WPA/CSC.cpp +5 -5
- package/lib/WPA/TypeAnalysis.cpp +3 -3
- package/package.json +1 -1
|
@@ -66,7 +66,7 @@ $(function() {
|
|
|
66
66
|
<div class="title">SymbolTableInfo.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="SymbolTableInfo_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- SymbolTableInfo.h -- Symbol information from IR------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * SymbolTableInfo.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Nov 11, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef INCLUDE_SVF_FE_SYMBOLTABLEINFO_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define INCLUDE_SVF_FE_SYMBOLTABLEINFO_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="LocationSet_8h.html">MemoryModel/LocationSet.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="SVFModule_8h.html">Util/SVFModule.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span>MemObj;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span>ObjTypeInfo;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>StInfo;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html"> 47</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a9d9633d48431b80c078bd4a34c1e7fa0"> 49</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SymbolTableBuilder.html">SymbolTableBuilder</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89b"> 54</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89b">SYMTYPE</a></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1"> 56</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1">NullPtr</a>,</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03"> 57</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03">BlkPtr</a>,</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539"> 58</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">BlackHole</a>,</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f"> 59</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">ConstantObj</a>,</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba23583f8cf79d3fd142f8550664ad8247"> 60</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba23583f8cf79d3fd142f8550664ad8247">ValSymbol</a>,</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba58703da9c0d4819869447b6a25dcff00"> 61</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba58703da9c0d4819869447b6a25dcff00">ObjSymbol</a>,</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba8ac9528bf8b81f7942c1cdc0bf63ec35"> 62</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba8ac9528bf8b81f7942c1cdc0bf63ec35">RetSymbol</a>,</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89bab8a256319d4853178a0308c0f6f830e3"> 63</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89bab8a256319d4853178a0308c0f6f830e3">VarargSymbol</a></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">//{@</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a03a11c48d748990ddac1ac5866ecb48e"> 70</a></span> <span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<const Value *, SymID></a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a03a11c48d748990ddac1ac5866ecb48e">ValueToIDMapTy</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a0371b60485199175b011cf3a42b404aa"> 72</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<SymID,MemObj*></a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a0371b60485199175b011cf3a42b404aa">IDToMemMapTy</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ada2191cb0e3798ba29aa442dca762290"> 74</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<const Function *, SymID></a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ada2191cb0e3798ba29aa442dca762290">FunToIDMapTy</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a9c9a9da876d41ab48e55f25efc266494"> 76</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<const Type*, StInfo*></a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a9c9a9da876d41ab48e55f25efc266494">TypeToFieldInfoMap</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a1b5fe6a59527983c80906261190fc864"> 77</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<CallSite></a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a1b5fe6a59527983c80906261190fc864">CallSiteSet</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a52fa7c8a2c7064b415f373fdea0fdf69"> 78</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<const Instruction*,CallSiteID></a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a52fa7c8a2c7064b415f373fdea0fdf69">CallSiteToIDMapTy</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a5af399ccac6ec809ade8f778379027bb"> 79</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<CallSiteID,const Instruction*></a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5af399ccac6ec809ade8f778379027bb">IDToCallSiteMapTy</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635"> 85</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a> *<a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08"> 87</a></span>  ValueToIDMapTy <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>; </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec"> 88</a></span>  ValueToIDMapTy <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>; </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681"> 89</a></span>  FunToIDMapTy <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>; </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9"> 90</a></span>  FunToIDMapTy <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>; </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a"> 91</a></span>  IDToMemMapTy <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>; </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e"> 93</a></span>  CallSiteSet <a class="code" href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e">callSiteSet</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// Singleton pattern here to enable instance of SymbolTableInfo can only be created once.</span></div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c"> 96</a></span>  <span class="keyword">static</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba"> 99</a></span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a9b8b7ecb217c7395025231b04e7b4c26"> 102</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a9b8b7ecb217c7395025231b04e7b4c26">maxFieldLimit</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">destroy</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ad20ccb90e8f9dee488a8aec0600399dc"> 108</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad20ccb90e8f9dee488a8aec0600399dc">modelConstants</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd"> 111</a></span>  <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#aff272bc1d00f2e57b7677d1826a31237"> 115</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#aff272bc1d00f2e57b7677d1826a31237">SymbolTableInfo</a>(<span class="keywordtype">void</span>) :</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  mod(nullptr), modelConstants(false), totalSymNum(0), <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">maxStruct</a>(nullptr), <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>(0)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">static</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolInfo</a>();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a9f8d99c761f3c7108d797b3702fcbfec"> 126</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a9f8d99c761f3c7108d797b3702fcbfec">releaseSymbolInfo</a>()</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  symInfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a6efac0ae8ebf2865067136675be5a340"> 131</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a6efac0ae8ebf2865067136675be5a340">~SymbolTableInfo</a>()</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">destroy</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a4decfc9e7f5dc096d7bfa42d6965763d"> 139</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4decfc9e7f5dc096d7bfa42d6965763d">setModelConstants</a>(<span class="keywordtype">bool</span> _modelConstants)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  modelConstants = _modelConstants;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5"> 143</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">getModelConstants</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad20ccb90e8f9dee488a8aec0600399dc">modelConstants</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#adc8e9a6cd5d27391beb1a88706e77a77"> 151</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> CallSiteSet& <a class="code" href="classSVF_1_1SymbolTableInfo.html#adc8e9a6cd5d27391beb1a88706e77a77">getCallSiteSet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e">callSiteSet</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a40387a4893ae5caf58d6f786533d2f44"> 158</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a40387a4893ae5caf58d6f786533d2f44">getModule</a>()</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a4f916c64ca04c4db30bd19fb8505724d"> 163</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4f916c64ca04c4db30bd19fb8505724d">setModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* m)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  mod = m;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d"> 169</a></span>  <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">getDataLayout</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span>(dl==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span> dl = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a>(mod);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// @{</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">isNullPtrSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">isBlackholeSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#acba43b6e9cdf07afaf3d30351aa8df7c"> 184</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#acba43b6e9cdf07afaf3d30351aa8df7c">isBlkPtr</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">return</span> (<span class="keywordtype">id</span> == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03">BlkPtr</a>);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ad095e4a569d399cadc03ce864f61c394"> 188</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad095e4a569d399cadc03ce864f61c394">isNullPtr</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">return</span> (<span class="keywordtype">id</span> == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1">NullPtr</a>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3"> 192</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">isBlkObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">return</span> (<span class="keywordtype">id</span> == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">BlackHole</a>);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b"> 196</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b">isConstantObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> (<span class="keywordtype">id</span> == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">ConstantObj</a>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a2fc4bfb83b71a4c14e16168382cb8f5d"> 200</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2fc4bfb83b71a4c14e16168382cb8f5d">isBlkObjOrConstantObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">isBlkObj</a>(<span class="keywordtype">id</span>) || <a class="code" href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b">isConstantObj</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a6ddf057415f641bd8ad15bded1415776">createBlkObj</a>(<a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> symId);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5c9d593aa68c7150cd382db230eec3e">createConstantObj</a>(<a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> symId);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#aebf96274e1ad2a523981487839a3025e"> 209</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#aebf96274e1ad2a523981487839a3025e">getBlkObj</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a65f49178a948380c2d6105178509a906">getObj</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a05ca2987d9f8716c24e489bec53502f4">blackholeSymID</a>());</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a661eb9ff1839c3af942517808414202b"> 213</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a661eb9ff1839c3af942517808414202b">getConstantObj</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a65f49178a948380c2d6105178509a906">getObj</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">constantSymID</a>());</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72"> 218</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72">blkPtrSymID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03">BlkPtr</a>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721"> 223</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">nullPtrSymID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1">NullPtr</a>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497"> 228</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">constantSymID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">ConstantObj</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a05ca2987d9f8716c24e489bec53502f4"> 233</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a05ca2987d9f8716c24e489bec53502f4">blackholeSymID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">BlackHole</a>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a8e40c578ccdd3a108a10a191a309bd18">createDummyObj</a>(<a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> symId, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="comment">// @}</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#aec7ee137f828c9d61a11df7fc2241161"> 244</a></span>  <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aec7ee137f828c9d61a11df7fc2241161">getValSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">isNullPtrSym</a>(val))</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">nullPtrSymID</a>();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">isBlackholeSym</a>(val))</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72">blkPtrSymID</a>();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  ValueToIDMapTy::const_iterator iter = valSymMap.find(val);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(iter!=valSymMap.end() &&<span class="stringliteral">"value sym not found"</span>);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">return</span> iter->second;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#acbcd5035240fab0b809c3334a27159ae"> 259</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#acbcd5035240fab0b809c3334a27159ae">hasValSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">isNullPtrSym</a>(val) || <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">isBlackholeSym</a>(val))</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> (valSymMap.find(val) != valSymMap.end());</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afca5a68d1825326e3ec6302ce0afee66"> 267</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#afca5a68d1825326e3ec6302ce0afee66">getObjSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)<span class="keyword"> const</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  ValueToIDMapTy::const_iterator iter = objSymMap.find(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4b55d5252da1f316f505cf6ce2078b28">SVFUtil::getGlobalRep</a>(val));</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(iter!=objSymMap.end() && <span class="stringliteral">"obj sym not found"</span>);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> iter->second;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a65f49178a948380c2d6105178509a906"> 274</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a65f49178a948380c2d6105178509a906">getObj</a>(<a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  IDToMemMapTy::const_iterator iter = objMap.find(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(iter!=objMap.end() && <span class="stringliteral">"obj not found"</span>);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">return</span> iter->second;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afc8b0b6aea972f34a0c099b75114b81e"> 281</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#afc8b0b6aea972f34a0c099b75114b81e">getRetSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *val)<span class="keyword"> const</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  FunToIDMapTy::const_iterator iter = returnSymMap.find(val);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(iter!=returnSymMap.end() && <span class="stringliteral">"ret sym not found"</span>);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> iter->second;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#aec3fd21a11f760ca8684e390c6948f02"> 288</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aec3fd21a11f760ca8684e390c6948f02">getVarargSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *val)<span class="keyword"> const</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  FunToIDMapTy::const_iterator iter = varargSymMap.find(val);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(iter!=varargSymMap.end() && <span class="stringliteral">"vararg sym not found"</span>);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">return</span> iter->second;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a26eb45eab3da4695a6e5bad51b01ddc5"> 299</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a26eb45eab3da4695a6e5bad51b01ddc5">getTotalSymNum</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#abc7e567209010286a68634c700d76cca"> 303</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#abc7e567209010286a68634c700d76cca">getMaxStructSize</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a8f3cb8a1db34dd692ee04561f4edeebf"> 311</a></span>  <span class="keyword">inline</span> ValueToIDMapTy& <a class="code" href="classSVF_1_1SymbolTableInfo.html#a8f3cb8a1db34dd692ee04561f4edeebf">valSyms</a>()</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a3f9612f32c651220386beb0514f8fcff"> 316</a></span>  <span class="keyword">inline</span> ValueToIDMapTy& <a class="code" href="classSVF_1_1SymbolTableInfo.html#a3f9612f32c651220386beb0514f8fcff">objSyms</a>()</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a929a20dc8f2eb4d82e93938b8339d697"> 321</a></span>  <span class="keyword">inline</span> IDToMemMapTy& <a class="code" href="classSVF_1_1SymbolTableInfo.html#a929a20dc8f2eb4d82e93938b8339d697">idToObjMap</a>()</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#aafd4da7cef6387bb974abe20185b7b96"> 326</a></span>  <span class="keyword">inline</span> FunToIDMapTy& <a class="code" href="classSVF_1_1SymbolTableInfo.html#aafd4da7cef6387bb974abe20185b7b96">retSyms</a>()</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ac449cd925dc05758c990179c0748e1d5"> 331</a></span>  <span class="keyword">inline</span> FunToIDMapTy& <a class="code" href="classSVF_1_1SymbolTableInfo.html#ac449cd925dc05758c990179c0748e1d5">varargSyms</a>()</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  TypeToFieldInfoMap::iterator <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">getStructInfoIter</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab"> 344</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">getStructInfoIter</a>(T)->second;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">getNumOfFlattenElements</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a6fe89e9d6c18a6aff6dffc1c78d08dff">getFlattenedElemIdx</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T, <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> origId);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#abffa6bdac98c5e64615291e8f2537caa">getOriginalElemType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* baseType, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> origId);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">getFlatternedElemType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* baseType, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flatten_idx);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aa99cab5480116905dd41ab0ad24b9462">collectTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a480a7565dcb5d9a94f4b0ffb44b127ee">getModulusOffset</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>& ls);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aa40ff2fcaba3d4297d63269b74738737">printFlattenFields</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keyword">static</span> std::string <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7d3001549966444622d5918e5811e89e">toString</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89b">SYMTYPE</a> symtype);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">dump</a>();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keyword">const</span> std::vector<const Type*>& <a class="code" href="classSVF_1_1SymbolTableInfo.html#abdd4abea485b94ae31fd9b75dd3866de">getFlattenFieldTypes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *T);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5297b79a02d8afce647a8b61bdab804">collectStructInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *T);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aea1c4ec32c307feb5da455a41cc51b5e">collectArrayInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* T);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">collectSimpleTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2b0f2c6745d14a9f6447ed96484dddac">createObjTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd"> 394</a></span>  TypeToFieldInfoMap <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> </div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46"> 397</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">maxStruct</a>;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35"> 400</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> };</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div><div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html"> 407</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MemObj.html">MemObj</a> </div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html#a750770ea992d39b22c8b2dda9aff2eaf"> 412</a></span>  <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* <a class="code" href="classSVF_1_1MemObj.html#a750770ea992d39b22c8b2dda9aff2eaf">typeInfo</a>;</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html#a011f324448f2796acaff6d2e388582e9"> 414</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *<a class="code" href="classSVF_1_1MemObj.html#a011f324448f2796acaff6d2e388582e9">refVal</a>;</div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html#a37f4e34b7f7dd6bfd4379cf3552e9046"> 416</a></span>  <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1MemObj.html#a37f4e34b7f7dd6bfd4379cf3552e9046">symId</a>;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(<a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span>, <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* ti, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val = <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html#ad56f353dde7462dd54297e1b51e6eb05"> 423</a></span>  <a class="code" href="classSVF_1_1MemObj.html#ad56f353dde7462dd54297e1b51e6eb05">~MemObj</a>()</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">destroy</a>();</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> </div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7d3001549966444622d5918e5811e89e">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3"> 431</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">return</span> refVal;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1"> 437</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">return</span> symId;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* getType() <span class="keyword">const</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> getMaxFieldOffsetLimit() <span class="keyword">const</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordtype">bool</span> isFieldInsensitive() <span class="keyword">const</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordtype">void</span> setFieldInsensitive();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordtype">void</span> setFieldSensitive();</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordtype">bool</span> isBlackHoleObj() <span class="keyword">const</span>;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordtype">bool</span> isFunction() <span class="keyword">const</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordtype">bool</span> isGlobalObj() <span class="keyword">const</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordtype">bool</span> isStaticObj() <span class="keyword">const</span>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordtype">bool</span> isStack() <span class="keyword">const</span>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordtype">bool</span> isHeap() <span class="keyword">const</span>;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordtype">bool</span> isStruct() <span class="keyword">const</span>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordtype">bool</span> isArray() <span class="keyword">const</span>;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordtype">bool</span> isVarStruct() <span class="keyword">const</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordtype">bool</span> isVarArray() <span class="keyword">const</span>;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordtype">bool</span> isConstantStruct() <span class="keyword">const</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordtype">bool</span> isConstantArray() <span class="keyword">const</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordtype">bool</span> isConstDataOrConstGlobal() <span class="keyword">const</span>;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">isConstantData</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordtype">bool</span> hasPtrObj() <span class="keyword">const</span>;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordtype">bool</span> isNonPtrFieldObj(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>& ls) <span class="keyword">const</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00480"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html#a1a8601b72b6e6df211db1fffdd54c48b"> 480</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemObj.html#a1a8601b72b6e6df211db1fffdd54c48b">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a> &mem)<span class="keyword"> const</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">return</span> getValue() == mem.<a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>();</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  }</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">destroy</a>();</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> };</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> </div><div class="line"><a name="l00495"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html"> 495</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1StInfo.html">StInfo</a></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00500"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a77c94c0ab75b2d5af2132ff8e082cefe"> 500</a></span>  std::vector<u32_t> <a class="code" href="classSVF_1_1StInfo.html#a77c94c0ab75b2d5af2132ff8e082cefe">fldIdxVec</a>;</div><div class="line"><a name="l00502"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a807ae5cb4d277c79f8b2c9ecde5f12ea"> 502</a></span>  std::vector<u32_t> <a class="code" href="classSVF_1_1StInfo.html#a807ae5cb4d277c79f8b2c9ecde5f12ea">elemIdxVec</a>;</div><div class="line"><a name="l00504"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a3da859dcf2a5fe7078b1257dd5f1e479"> 504</a></span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<u32_t, const Type*></a> <a class="code" href="classSVF_1_1StInfo.html#a3da859dcf2a5fe7078b1257dd5f1e479">fldIdx2TypeMap</a>;</div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a08cf9420a9c7d4019abee8b42fb578bf"> 506</a></span>  std::vector<const Type*> <a class="code" href="classSVF_1_1StInfo.html#a08cf9420a9c7d4019abee8b42fb578bf">finfo</a>;</div><div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a6c52ecbeeeeb0dda019c68aec687f2c2"> 508</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#a6c52ecbeeeeb0dda019c68aec687f2c2">stride</a>; </div><div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a7aa5b5018b4dec4913eb6aecf25568a4"> 510</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#a7aa5b5018b4dec4913eb6aecf25568a4">numOfFlattenElements</a>; </div><div class="line"><a name="l00512"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#aa9b4e659f4a4421aadf736a3de24ca50"> 512</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#aa9b4e659f4a4421aadf736a3de24ca50">numOfFlattenFields</a>; </div><div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a8b24c6a35701a719cd5f1deef62421cd"> 514</a></span>  std::vector<const Type*> <a class="code" href="classSVF_1_1StInfo.html#a8b24c6a35701a719cd5f1deef62421cd">flattenElementTypes</a>;</div><div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a4cd926bd095254dd287f1cf26e02483e"> 516</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#a4cd926bd095254dd287f1cf26e02483e">maxFieldLimit</a>;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(); </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>& st); </div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>&); </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00524"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a8c6d6933ad2c4be044d0a3557736e28d"> 524</a></span>  <a class="code" href="classSVF_1_1StInfo.html#a8c6d6933ad2c4be044d0a3557736e28d">StInfo</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> s) : stride(s), numOfFlattenElements(s), numOfFlattenFields(s)</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  }</div><div class="line"><a name="l00528"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a1fa88b6bfbbd648df1b15f11d61578ed"> 528</a></span>  <a class="code" href="classSVF_1_1StInfo.html#a1fa88b6bfbbd648df1b15f11d61578ed">~StInfo</a>()</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#aed9399cfe3ace00289f2a5265df80199"> 532</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1StInfo.html#aed9399cfe3ace00289f2a5265df80199">setMaxFieldLimit</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> limit)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  maxFieldLimit = limit;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> </div><div class="line"><a name="l00537"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2"> 537</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2">getMaxFieldLimit</a>()</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a9b8b7ecb217c7395025231b04e7b4c26">maxFieldLimit</a>;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="comment">//{@</span></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#abffa6bdac98c5e64615291e8f2537caa">getOriginalElemType</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fldIdx);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> </div><div class="line"><a name="l00548"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#aaf05447c20c9f90eea64ab6e88d6ab05"> 548</a></span>  <span class="keyword">inline</span> std::vector<u32_t>& <a class="code" href="classSVF_1_1StInfo.html#aaf05447c20c9f90eea64ab6e88d6ab05">getFlattenedFieldIdxVec</a>()</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">return</span> fldIdxVec;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  }</div><div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb"> 552</a></span>  <span class="keyword">inline</span> std::vector<u32_t>& <a class="code" href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb">getFlattenedElemIdxVec</a>()</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  {</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">return</span> elemIdxVec;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  }</div><div class="line"><a name="l00556"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#ae46e3a2f3eb02e9facf3e317faaf337d"> 556</a></span>  <span class="keyword">inline</span> std::vector<const Type*>& <a class="code" href="classSVF_1_1StInfo.html#ae46e3a2f3eb02e9facf3e317faaf337d">getFlattenElementTypes</a>()</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  {</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordflow">return</span> flattenElementTypes;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  }</div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a7fe5593e487a04e8f0eb28ca7bc31fe9"> 560</a></span>  <span class="keyword">inline</span> std::vector<const Type*>& <a class="code" href="classSVF_1_1StInfo.html#a7fe5593e487a04e8f0eb28ca7bc31fe9">getFlattenFieldTypes</a>()</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">return</span> finfo;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  }</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordtype">void</span> addFldWithType(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fldIdx, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> elemIdx);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3"> 570</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> ne)</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  numOfFlattenFields = nf;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  numOfFlattenElements = ne;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div><div class="line"><a name="l00577"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762"> 577</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordflow">return</span> numOfFlattenElements;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  }</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> </div><div class="line"><a name="l00582"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0"> 582</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">return</span> numOfFlattenFields;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  }</div><div class="line"><a name="l00586"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690"> 586</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">getStride</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">return</span> stride;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  }</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> };</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> </div><div class="line"><a name="l00594"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html"> 594</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> {</div><div class="line"><a name="l00596"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a9d9633d48431b80c078bd4a34c1e7fa0"> 596</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SymbolTableBuilder.html">SymbolTableBuilder</a>;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00598"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830"> 598</a></span>  <span class="keyword">typedef</span> <span class="keyword">enum</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  {</div><div class="line"><a name="l00600"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515"> 600</a></span>  FUNCTION_OBJ = 0x1, <span class="comment">// object is a function</span></div><div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b"> 601</a></span>  GLOBVAR_OBJ = 0x2, <span class="comment">// object is a global variable</span></div><div class="line"><a name="l00602"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a4e7606afe2dabdef9c9836ae798a9d98"> 602</a></span>  STATIC_OBJ = 0x4, <span class="comment">// object is a static variable allocated before main</span></div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5"> 603</a></span>  STACK_OBJ = 0x8, <span class="comment">// object is a stack variable</span></div><div class="line"><a name="l00604"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c"> 604</a></span>  HEAP_OBJ = 0x10, <span class="comment">// object is a heap variable</span></div><div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08"> 605</a></span>  VAR_STRUCT_OBJ = 0x20, <span class="comment">// object contains struct</span></div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c"> 606</a></span>  VAR_ARRAY_OBJ = 0x40, <span class="comment">// object contains array</span></div><div class="line"><a name="l00607"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd"> 607</a></span>  CONST_STRUCT_OBJ = 0x80, <span class="comment">// constant struct</span></div><div class="line"><a name="l00608"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047"> 608</a></span>  CONST_ARRAY_OBJ = 0x100, <span class="comment">// constant array</span></div><div class="line"><a name="l00609"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c"> 609</a></span>  CONST_GLOBAL_OBJ = 0x200, <span class="comment">// global constant object</span></div><div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e"> 610</a></span>  CONST_DATA = 0x400, <span class="comment">// constant object str e.g. 5, 10, 1.0</span></div><div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9"> 611</a></span>  HASPTR_OBJ = 0x800 <span class="comment">// the object stores a pointer address</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  } <a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830">MEMTYPE</a>;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> </div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a6e7780d4e2639c089ff6c853d8d78a4d"> 616</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1ObjTypeInfo.html#a6e7780d4e2639c089ff6c853d8d78a4d">type</a>;</div><div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#abf6bbcccf73bfcd5b950803d349c4eb1"> 618</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ObjTypeInfo.html#abf6bbcccf73bfcd5b950803d349c4eb1">flags</a>;</div><div class="line"><a name="l00622"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a5ff63eb0654acd152f7d6c18618ee94a"> 622</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a5ff63eb0654acd152f7d6c18618ee94a">maxOffsetLimit</a>;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> </div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordtype">void</span> resetTypeForHeapStaticObj(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> </div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* t, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> max);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> </div><div class="line"><a name="l00631"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#ace5fdb3701cb93df0f02aedc94e7e975"> 631</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#ace5fdb3701cb93df0f02aedc94e7e975">~ObjTypeInfo</a>()</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  }</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  </div><div class="line"><a name="l00636"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a"> 636</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordflow">return</span> type;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  }</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> </div><div class="line"><a name="l00642"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4"> 642</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>()</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordflow">return</span> maxOffsetLimit;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  }</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> </div><div class="line"><a name="l00648"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092"> 648</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092">setMaxFieldOffsetLimit</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> limit)</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  {</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  maxOffsetLimit = limit;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> </div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div><div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49"> 655</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830">MEMTYPE</a> mask)</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  {</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  flags |= mask;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  }</div><div class="line"><a name="l00659"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a8e630eb30d05f665b998c6f9326d65cb"> 659</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a8e630eb30d05f665b998c6f9326d65cb">hasFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830">MEMTYPE</a> mask)</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  {</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">return</span> (flags & mask) == mask;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  }</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> </div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> </div><div class="line"><a name="l00667"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#ac99fa14fdf7bc0dd3e9ff36c7a3a351f"> 667</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#ac99fa14fdf7bc0dd3e9ff36c7a3a351f">isFunction</a>()</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keywordflow">return</span> hasFlag(FUNCTION_OBJ);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  }</div><div class="line"><a name="l00671"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#aa2855b69150287e5f04a7a683dc4c91f"> 671</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#aa2855b69150287e5f04a7a683dc4c91f">isGlobalObj</a>()</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  {</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordflow">return</span> hasFlag(GLOBVAR_OBJ);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  }</div><div class="line"><a name="l00675"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a3594dc1c1943dbac0ab72f2ff163c523"> 675</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a3594dc1c1943dbac0ab72f2ff163c523">isStaticObj</a>()</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">return</span> hasFlag(STATIC_OBJ);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  }</div><div class="line"><a name="l00679"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#aa568dc82decd28d2ef40785a4a647602"> 679</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#aa568dc82decd28d2ef40785a4a647602">isStack</a>()</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keywordflow">return</span> hasFlag(STACK_OBJ);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  }</div><div class="line"><a name="l00683"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a26c179394fbda9a9261d0bf3f52b619d"> 683</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a26c179394fbda9a9261d0bf3f52b619d">isHeap</a>()</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  {</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">return</span> hasFlag(HEAP_OBJ);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> </div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> </div><div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a40d6703875b370aed2c6dc41c0594af5"> 692</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a40d6703875b370aed2c6dc41c0594af5">isVarStruct</a>()</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="keywordflow">return</span> hasFlag(VAR_STRUCT_OBJ);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  }</div><div class="line"><a name="l00696"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a41f916ab4e3a2c163fca636eae948ce7"> 696</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a41f916ab4e3a2c163fca636eae948ce7">isConstantStruct</a>()</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  {</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keywordflow">return</span> hasFlag(CONST_STRUCT_OBJ);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  }</div><div class="line"><a name="l00700"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a06493939f797f122b70b90bbf22cad7a"> 700</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a06493939f797f122b70b90bbf22cad7a">isStruct</a>()</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  {</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keywordflow">return</span> hasFlag(VAR_STRUCT_OBJ) || hasFlag(CONST_STRUCT_OBJ);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  }</div><div class="line"><a name="l00704"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#aca1e900f9b0a774684af77666cf033e3"> 704</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#aca1e900f9b0a774684af77666cf033e3">isVarArray</a>()</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="keywordflow">return</span> hasFlag(VAR_ARRAY_OBJ);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  }</div><div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#ac1ee7a720959c0e97496870d6e759212"> 708</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#ac1ee7a720959c0e97496870d6e759212">isConstantArray</a>()</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  {</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">return</span> hasFlag(CONST_ARRAY_OBJ);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  }</div><div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a0627e8b9dda2e13cc77c334eefab21e1"> 712</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a0627e8b9dda2e13cc77c334eefab21e1">isArray</a>()</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  {</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keywordflow">return</span> hasFlag(VAR_ARRAY_OBJ) || hasFlag(CONST_ARRAY_OBJ);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  }</div><div class="line"><a name="l00716"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a8e6c60978df9828c1dcb54086e83edc1"> 716</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a8e6c60978df9828c1dcb54086e83edc1">isConstDataOrConstGlobal</a>()</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  {</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">return</span> hasFlag(CONST_GLOBAL_OBJ) || hasFlag(CONST_DATA);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  }</div><div class="line"><a name="l00720"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a6f6c80f7d067a6082a9af04d2547cf34"> 720</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a6f6c80f7d067a6082a9af04d2547cf34">isConstantData</a>()</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  {</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">return</span> hasFlag(CONST_DATA);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  }</div><div class="line"><a name="l00724"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#ac5bae1e7917f415193a805e8d2e29320"> 724</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#ac5bae1e7917f415193a805e8d2e29320">hasPtrObj</a>()</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">return</span> hasFlag(HASPTR_OBJ);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  }</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isNonPtrFieldObj(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>& ls);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> };</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> </div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> </div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span> <span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_SVF_FE_SYMBOLTABLEINFO_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_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>
|
|
69
|
+
<a href="SymbolTableInfo_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- SymbolTableInfo.h -- Symbol information from IR------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * SymbolTableInfo.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Nov 11, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef INCLUDE_SVF_FE_SYMBOLTABLEINFO_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define INCLUDE_SVF_FE_SYMBOLTABLEINFO_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="LocationSet_8h.html">MemoryModel/LocationSet.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="SVFModule_8h.html">Util/SVFModule.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span>MemObj;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span>ObjTypeInfo;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>StInfo;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html"> 47</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a9d9633d48431b80c078bd4a34c1e7fa0"> 49</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SymbolTableBuilder.html">SymbolTableBuilder</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89b"> 54</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89b">SYMTYPE</a></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1"> 56</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1">NullPtr</a>,</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03"> 57</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03">BlkPtr</a>,</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539"> 58</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">BlackHole</a>,</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f"> 59</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">ConstantObj</a>,</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba23583f8cf79d3fd142f8550664ad8247"> 60</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba23583f8cf79d3fd142f8550664ad8247">ValSymbol</a>,</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba58703da9c0d4819869447b6a25dcff00"> 61</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba58703da9c0d4819869447b6a25dcff00">ObjSymbol</a>,</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba8ac9528bf8b81f7942c1cdc0bf63ec35"> 62</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba8ac9528bf8b81f7942c1cdc0bf63ec35">RetSymbol</a>,</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89bab8a256319d4853178a0308c0f6f830e3"> 63</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89bab8a256319d4853178a0308c0f6f830e3">VarargSymbol</a></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">//{@</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a03a11c48d748990ddac1ac5866ecb48e"> 70</a></span> <span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<const Value *, SymID></a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a03a11c48d748990ddac1ac5866ecb48e">ValueToIDMapTy</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a0371b60485199175b011cf3a42b404aa"> 72</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<SymID,MemObj*></a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a0371b60485199175b011cf3a42b404aa">IDToMemMapTy</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ada2191cb0e3798ba29aa442dca762290"> 74</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<const Function *, SymID></a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ada2191cb0e3798ba29aa442dca762290">FunToIDMapTy</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a9c9a9da876d41ab48e55f25efc266494"> 76</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<const Type*, StInfo*></a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a9c9a9da876d41ab48e55f25efc266494">TypeToFieldInfoMap</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a1b5fe6a59527983c80906261190fc864"> 77</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<CallSite></a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a1b5fe6a59527983c80906261190fc864">CallSiteSet</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a52fa7c8a2c7064b415f373fdea0fdf69"> 78</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<const Instruction*,CallSiteID></a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a52fa7c8a2c7064b415f373fdea0fdf69">CallSiteToIDMapTy</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a5af399ccac6ec809ade8f778379027bb"> 79</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap<CallSiteID,const Instruction*></a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5af399ccac6ec809ade8f778379027bb">IDToCallSiteMapTy</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635"> 85</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a> *<a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08"> 87</a></span>  ValueToIDMapTy <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>; </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec"> 88</a></span>  ValueToIDMapTy <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>; </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681"> 89</a></span>  FunToIDMapTy <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>; </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9"> 90</a></span>  FunToIDMapTy <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>; </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a"> 91</a></span>  IDToMemMapTy <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>; </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e"> 93</a></span>  CallSiteSet <a class="code" href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e">callSiteSet</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// Singleton pattern here to enable instance of SymbolTableInfo can only be created once.</span></div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c"> 96</a></span>  <span class="keyword">static</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba"> 99</a></span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a9b8b7ecb217c7395025231b04e7b4c26"> 102</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a9b8b7ecb217c7395025231b04e7b4c26">maxFieldLimit</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">destroy</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ad20ccb90e8f9dee488a8aec0600399dc"> 108</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad20ccb90e8f9dee488a8aec0600399dc">modelConstants</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd"> 111</a></span>  <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#aff272bc1d00f2e57b7677d1826a31237"> 115</a></span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#aff272bc1d00f2e57b7677d1826a31237">SymbolTableInfo</a>(<span class="keywordtype">void</span>) :</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  mod(nullptr), modelConstants(false), totalSymNum(0), <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">maxStruct</a>(nullptr), <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>(0)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">static</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolInfo</a>();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a9f8d99c761f3c7108d797b3702fcbfec"> 126</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a9f8d99c761f3c7108d797b3702fcbfec">releaseSymbolInfo</a>()</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  symInfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a6efac0ae8ebf2865067136675be5a340"> 131</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a6efac0ae8ebf2865067136675be5a340">~SymbolTableInfo</a>()</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">destroy</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a4decfc9e7f5dc096d7bfa42d6965763d"> 139</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4decfc9e7f5dc096d7bfa42d6965763d">setModelConstants</a>(<span class="keywordtype">bool</span> _modelConstants)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  modelConstants = _modelConstants;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5"> 143</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">getModelConstants</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad20ccb90e8f9dee488a8aec0600399dc">modelConstants</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#adc8e9a6cd5d27391beb1a88706e77a77"> 151</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> CallSiteSet& <a class="code" href="classSVF_1_1SymbolTableInfo.html#adc8e9a6cd5d27391beb1a88706e77a77">getCallSiteSet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e">callSiteSet</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a40387a4893ae5caf58d6f786533d2f44"> 158</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a40387a4893ae5caf58d6f786533d2f44">getModule</a>()</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a4f916c64ca04c4db30bd19fb8505724d"> 163</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4f916c64ca04c4db30bd19fb8505724d">setModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* m)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  mod = m;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d"> 169</a></span>  <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">getDataLayout</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span>(dl==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span> dl = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a>(mod);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// @{</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">isNullPtrSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">isBlackholeSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#acba43b6e9cdf07afaf3d30351aa8df7c"> 184</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#acba43b6e9cdf07afaf3d30351aa8df7c">isBlkPtr</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">return</span> (<span class="keywordtype">id</span> == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03">BlkPtr</a>);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ad095e4a569d399cadc03ce864f61c394"> 188</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad095e4a569d399cadc03ce864f61c394">isNullPtr</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">return</span> (<span class="keywordtype">id</span> == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1">NullPtr</a>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3"> 192</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">isBlkObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">return</span> (<span class="keywordtype">id</span> == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">BlackHole</a>);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b"> 196</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b">isConstantObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> (<span class="keywordtype">id</span> == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">ConstantObj</a>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a2fc4bfb83b71a4c14e16168382cb8f5d"> 200</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2fc4bfb83b71a4c14e16168382cb8f5d">isBlkObjOrConstantObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">isBlkObj</a>(<span class="keywordtype">id</span>) || <a class="code" href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b">isConstantObj</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a6ddf057415f641bd8ad15bded1415776">createBlkObj</a>(<a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> symId);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5c9d593aa68c7150cd382db230eec3e">createConstantObj</a>(<a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> symId);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#aebf96274e1ad2a523981487839a3025e"> 209</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#aebf96274e1ad2a523981487839a3025e">getBlkObj</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a65f49178a948380c2d6105178509a906">getObj</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a05ca2987d9f8716c24e489bec53502f4">blackholeSymID</a>());</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a661eb9ff1839c3af942517808414202b"> 213</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a661eb9ff1839c3af942517808414202b">getConstantObj</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a65f49178a948380c2d6105178509a906">getObj</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">constantSymID</a>());</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72"> 218</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72">blkPtrSymID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03">BlkPtr</a>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721"> 223</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">nullPtrSymID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1">NullPtr</a>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497"> 228</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">constantSymID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">ConstantObj</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a05ca2987d9f8716c24e489bec53502f4"> 233</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a05ca2987d9f8716c24e489bec53502f4">blackholeSymID</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">BlackHole</a>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a8e40c578ccdd3a108a10a191a309bd18">createDummyObj</a>(<a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> symId, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="comment">// @}</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#aec7ee137f828c9d61a11df7fc2241161"> 244</a></span>  <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aec7ee137f828c9d61a11df7fc2241161">getValSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">isNullPtrSym</a>(val))</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">nullPtrSymID</a>();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">isBlackholeSym</a>(val))</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72">blkPtrSymID</a>();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  ValueToIDMapTy::const_iterator iter = valSymMap.find(val);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(iter!=valSymMap.end() &&<span class="stringliteral">"value sym not found"</span>);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">return</span> iter->second;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#acbcd5035240fab0b809c3334a27159ae"> 259</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#acbcd5035240fab0b809c3334a27159ae">hasValSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">isNullPtrSym</a>(val) || <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">isBlackholeSym</a>(val))</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> (valSymMap.find(val) != valSymMap.end());</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afca5a68d1825326e3ec6302ce0afee66"> 267</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#afca5a68d1825326e3ec6302ce0afee66">getObjSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)<span class="keyword"> const</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  ValueToIDMapTy::const_iterator iter = objSymMap.find(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4b55d5252da1f316f505cf6ce2078b28">SVFUtil::getGlobalRep</a>(val));</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(iter!=objSymMap.end() && <span class="stringliteral">"obj sym not found"</span>);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> iter->second;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a65f49178a948380c2d6105178509a906"> 274</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a65f49178a948380c2d6105178509a906">getObj</a>(<a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  IDToMemMapTy::const_iterator iter = objMap.find(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(iter!=objMap.end() && <span class="stringliteral">"obj not found"</span>);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">return</span> iter->second;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#afc8b0b6aea972f34a0c099b75114b81e"> 281</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#afc8b0b6aea972f34a0c099b75114b81e">getRetSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *val)<span class="keyword"> const</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  FunToIDMapTy::const_iterator iter = returnSymMap.find(val);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(iter!=returnSymMap.end() && <span class="stringliteral">"ret sym not found"</span>);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> iter->second;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#aec3fd21a11f760ca8684e390c6948f02"> 288</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aec3fd21a11f760ca8684e390c6948f02">getVarargSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *val)<span class="keyword"> const</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  FunToIDMapTy::const_iterator iter = varargSymMap.find(val);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(iter!=varargSymMap.end() && <span class="stringliteral">"vararg sym not found"</span>);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">return</span> iter->second;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a26eb45eab3da4695a6e5bad51b01ddc5"> 299</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a26eb45eab3da4695a6e5bad51b01ddc5">getTotalSymNum</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#abc7e567209010286a68634c700d76cca"> 303</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#abc7e567209010286a68634c700d76cca">getMaxStructSize</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a8f3cb8a1db34dd692ee04561f4edeebf"> 311</a></span>  <span class="keyword">inline</span> ValueToIDMapTy& <a class="code" href="classSVF_1_1SymbolTableInfo.html#a8f3cb8a1db34dd692ee04561f4edeebf">valSyms</a>()</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a3f9612f32c651220386beb0514f8fcff"> 316</a></span>  <span class="keyword">inline</span> ValueToIDMapTy& <a class="code" href="classSVF_1_1SymbolTableInfo.html#a3f9612f32c651220386beb0514f8fcff">objSyms</a>()</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a929a20dc8f2eb4d82e93938b8339d697"> 321</a></span>  <span class="keyword">inline</span> IDToMemMapTy& <a class="code" href="classSVF_1_1SymbolTableInfo.html#a929a20dc8f2eb4d82e93938b8339d697">idToObjMap</a>()</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#aafd4da7cef6387bb974abe20185b7b96"> 326</a></span>  <span class="keyword">inline</span> FunToIDMapTy& <a class="code" href="classSVF_1_1SymbolTableInfo.html#aafd4da7cef6387bb974abe20185b7b96">retSyms</a>()</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ac449cd925dc05758c990179c0748e1d5"> 331</a></span>  <span class="keyword">inline</span> FunToIDMapTy& <a class="code" href="classSVF_1_1SymbolTableInfo.html#ac449cd925dc05758c990179c0748e1d5">varargSyms</a>()</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  TypeToFieldInfoMap::iterator <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">getStructInfoIter</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab"> 344</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeb3f594076c60fc313c29d282f347f08">getStructInfoIter</a>(T)->second;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">getNumOfFlattenElements</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">getFlattenedElemIdx</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> origId);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#abffa6bdac98c5e64615291e8f2537caa">getOriginalElemType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* baseType, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> origId);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">getFlatternedElemType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* baseType, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flatten_idx);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aa99cab5480116905dd41ab0ad24b9462">collectTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a480a7565dcb5d9a94f4b0ffb44b127ee">getModulusOffset</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>& ls);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aa40ff2fcaba3d4297d63269b74738737">printFlattenFields</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keyword">static</span> std::string <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7d3001549966444622d5918e5811e89e">toString</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89b">SYMTYPE</a> symtype);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">dump</a>();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keyword">const</span> std::vector<const Type*>& <a class="code" href="classSVF_1_1SymbolTableInfo.html#abdd4abea485b94ae31fd9b75dd3866de">getFlattenFieldTypes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *T);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5297b79a02d8afce647a8b61bdab804">collectStructInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *T);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aea1c4ec32c307feb5da455a41cc51b5e">collectArrayInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* T);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">collectSimpleTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2b0f2c6745d14a9f6447ed96484dddac">createObjTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd"> 394</a></span>  TypeToFieldInfoMap <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> </div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46"> 397</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">maxStruct</a>;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35"> 400</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> };</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div><div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html"> 407</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MemObj.html">MemObj</a> </div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html#a750770ea992d39b22c8b2dda9aff2eaf"> 412</a></span>  <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* <a class="code" href="classSVF_1_1MemObj.html#a750770ea992d39b22c8b2dda9aff2eaf">typeInfo</a>;</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html#a011f324448f2796acaff6d2e388582e9"> 414</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *<a class="code" href="classSVF_1_1MemObj.html#a011f324448f2796acaff6d2e388582e9">refVal</a>;</div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html#a37f4e34b7f7dd6bfd4379cf3552e9046"> 416</a></span>  <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1MemObj.html#a37f4e34b7f7dd6bfd4379cf3552e9046">symId</a>;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(<a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span>, <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* ti, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val = <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html#ad56f353dde7462dd54297e1b51e6eb05"> 423</a></span>  <a class="code" href="classSVF_1_1MemObj.html#ad56f353dde7462dd54297e1b51e6eb05">~MemObj</a>()</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">destroy</a>();</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> </div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7d3001549966444622d5918e5811e89e">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3"> 431</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">return</span> refVal;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1"> 437</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">return</span> symId;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* getType() <span class="keyword">const</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> getMaxFieldOffsetLimit() <span class="keyword">const</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordtype">bool</span> isFieldInsensitive() <span class="keyword">const</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordtype">void</span> setFieldInsensitive();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordtype">void</span> setFieldSensitive();</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordtype">bool</span> isBlackHoleObj() <span class="keyword">const</span>;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordtype">bool</span> isFunction() <span class="keyword">const</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordtype">bool</span> isGlobalObj() <span class="keyword">const</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordtype">bool</span> isStaticObj() <span class="keyword">const</span>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordtype">bool</span> isStack() <span class="keyword">const</span>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordtype">bool</span> isHeap() <span class="keyword">const</span>;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordtype">bool</span> isStruct() <span class="keyword">const</span>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordtype">bool</span> isArray() <span class="keyword">const</span>;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordtype">bool</span> isVarStruct() <span class="keyword">const</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordtype">bool</span> isVarArray() <span class="keyword">const</span>;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordtype">bool</span> isConstantStruct() <span class="keyword">const</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordtype">bool</span> isConstantArray() <span class="keyword">const</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordtype">bool</span> isConstDataOrConstGlobal() <span class="keyword">const</span>;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">isConstantData</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordtype">bool</span> hasPtrObj() <span class="keyword">const</span>;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordtype">bool</span> isNonPtrFieldObj(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>& ls) <span class="keyword">const</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00480"></a><span class="lineno"><a class="line" href="classSVF_1_1MemObj.html#a1a8601b72b6e6df211db1fffdd54c48b"> 480</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemObj.html#a1a8601b72b6e6df211db1fffdd54c48b">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a> &mem)<span class="keyword"> const</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">return</span> getValue() == mem.<a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>();</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  }</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">destroy</a>();</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> };</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> </div><div class="line"><a name="l00495"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html"> 495</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1StInfo.html">StInfo</a></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00500"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a77c94c0ab75b2d5af2132ff8e082cefe"> 500</a></span>  std::vector<u32_t> <a class="code" href="classSVF_1_1StInfo.html#a77c94c0ab75b2d5af2132ff8e082cefe">fldIdxVec</a>;</div><div class="line"><a name="l00502"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a807ae5cb4d277c79f8b2c9ecde5f12ea"> 502</a></span>  std::vector<u32_t> <a class="code" href="classSVF_1_1StInfo.html#a807ae5cb4d277c79f8b2c9ecde5f12ea">elemIdxVec</a>;</div><div class="line"><a name="l00504"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a3da859dcf2a5fe7078b1257dd5f1e479"> 504</a></span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<u32_t, const Type*></a> <a class="code" href="classSVF_1_1StInfo.html#a3da859dcf2a5fe7078b1257dd5f1e479">fldIdx2TypeMap</a>;</div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a08cf9420a9c7d4019abee8b42fb578bf"> 506</a></span>  std::vector<const Type*> <a class="code" href="classSVF_1_1StInfo.html#a08cf9420a9c7d4019abee8b42fb578bf">finfo</a>;</div><div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a6c52ecbeeeeb0dda019c68aec687f2c2"> 508</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#a6c52ecbeeeeb0dda019c68aec687f2c2">stride</a>; </div><div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a7aa5b5018b4dec4913eb6aecf25568a4"> 510</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#a7aa5b5018b4dec4913eb6aecf25568a4">numOfFlattenElements</a>; </div><div class="line"><a name="l00512"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#aa9b4e659f4a4421aadf736a3de24ca50"> 512</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#aa9b4e659f4a4421aadf736a3de24ca50">numOfFlattenFields</a>; </div><div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a8b24c6a35701a719cd5f1deef62421cd"> 514</a></span>  std::vector<const Type*> <a class="code" href="classSVF_1_1StInfo.html#a8b24c6a35701a719cd5f1deef62421cd">flattenElementTypes</a>;</div><div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a4cd926bd095254dd287f1cf26e02483e"> 516</a></span>  <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#a4cd926bd095254dd287f1cf26e02483e">maxFieldLimit</a>;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(); </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>& st); </div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>&); </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00524"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a8c6d6933ad2c4be044d0a3557736e28d"> 524</a></span>  <a class="code" href="classSVF_1_1StInfo.html#a8c6d6933ad2c4be044d0a3557736e28d">StInfo</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> s) : stride(s), numOfFlattenElements(s), numOfFlattenFields(s)</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  }</div><div class="line"><a name="l00528"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a1fa88b6bfbbd648df1b15f11d61578ed"> 528</a></span>  <a class="code" href="classSVF_1_1StInfo.html#a1fa88b6bfbbd648df1b15f11d61578ed">~StInfo</a>()</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#aed9399cfe3ace00289f2a5265df80199"> 532</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1StInfo.html#aed9399cfe3ace00289f2a5265df80199">setMaxFieldLimit</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> limit)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  maxFieldLimit = limit;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> </div><div class="line"><a name="l00537"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2"> 537</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2">getMaxFieldLimit</a>()</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a9b8b7ecb217c7395025231b04e7b4c26">maxFieldLimit</a>;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="comment">//{@</span></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1SymbolTableInfo.html#abffa6bdac98c5e64615291e8f2537caa">getOriginalElemType</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fldIdx);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> </div><div class="line"><a name="l00548"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#aaf05447c20c9f90eea64ab6e88d6ab05"> 548</a></span>  <span class="keyword">inline</span> std::vector<u32_t>& <a class="code" href="classSVF_1_1StInfo.html#aaf05447c20c9f90eea64ab6e88d6ab05">getFlattenedFieldIdxVec</a>()</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">return</span> fldIdxVec;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  }</div><div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb"> 552</a></span>  <span class="keyword">inline</span> std::vector<u32_t>& <a class="code" href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb">getFlattenedElemIdxVec</a>()</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  {</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">return</span> elemIdxVec;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  }</div><div class="line"><a name="l00556"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#ae46e3a2f3eb02e9facf3e317faaf337d"> 556</a></span>  <span class="keyword">inline</span> std::vector<const Type*>& <a class="code" href="classSVF_1_1StInfo.html#ae46e3a2f3eb02e9facf3e317faaf337d">getFlattenElementTypes</a>()</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  {</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordflow">return</span> flattenElementTypes;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  }</div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a7fe5593e487a04e8f0eb28ca7bc31fe9"> 560</a></span>  <span class="keyword">inline</span> std::vector<const Type*>& <a class="code" href="classSVF_1_1StInfo.html#a7fe5593e487a04e8f0eb28ca7bc31fe9">getFlattenFieldTypes</a>()</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">return</span> finfo;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  }</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordtype">void</span> addFldWithType(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fldIdx, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> elemIdx);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3"> 570</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1StInfo.html#a1a07c2b1415c29d7d70791c6dfe602a3">setNumOfFieldsAndElems</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> ne)</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  numOfFlattenFields = nf;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  numOfFlattenElements = ne;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div><div class="line"><a name="l00577"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762"> 577</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordflow">return</span> numOfFlattenElements;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  }</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> </div><div class="line"><a name="l00582"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0"> 582</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">return</span> numOfFlattenFields;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  }</div><div class="line"><a name="l00586"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690"> 586</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1StInfo.html#af5094ec542f345d214a682d4138cf690">getStride</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">return</span> stride;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  }</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> };</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> </div><div class="line"><a name="l00594"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html"> 594</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> {</div><div class="line"><a name="l00596"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a9d9633d48431b80c078bd4a34c1e7fa0"> 596</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SymbolTableBuilder.html">SymbolTableBuilder</a>;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00598"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830"> 598</a></span>  <span class="keyword">typedef</span> <span class="keyword">enum</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  {</div><div class="line"><a name="l00600"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515"> 600</a></span>  FUNCTION_OBJ = 0x1, <span class="comment">// object is a function</span></div><div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b"> 601</a></span>  GLOBVAR_OBJ = 0x2, <span class="comment">// object is a global variable</span></div><div class="line"><a name="l00602"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a4e7606afe2dabdef9c9836ae798a9d98"> 602</a></span>  STATIC_OBJ = 0x4, <span class="comment">// object is a static variable allocated before main</span></div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5"> 603</a></span>  STACK_OBJ = 0x8, <span class="comment">// object is a stack variable</span></div><div class="line"><a name="l00604"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c"> 604</a></span>  HEAP_OBJ = 0x10, <span class="comment">// object is a heap variable</span></div><div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08"> 605</a></span>  VAR_STRUCT_OBJ = 0x20, <span class="comment">// object contains struct</span></div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c"> 606</a></span>  VAR_ARRAY_OBJ = 0x40, <span class="comment">// object contains array</span></div><div class="line"><a name="l00607"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd"> 607</a></span>  CONST_STRUCT_OBJ = 0x80, <span class="comment">// constant struct</span></div><div class="line"><a name="l00608"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047"> 608</a></span>  CONST_ARRAY_OBJ = 0x100, <span class="comment">// constant array</span></div><div class="line"><a name="l00609"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c"> 609</a></span>  CONST_GLOBAL_OBJ = 0x200, <span class="comment">// global constant object</span></div><div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e"> 610</a></span>  CONST_DATA = 0x400, <span class="comment">// constant object str e.g. 5, 10, 1.0</span></div><div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9"> 611</a></span>  HASPTR_OBJ = 0x800 <span class="comment">// the object stores a pointer address</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  } <a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830">MEMTYPE</a>;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> </div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a6e7780d4e2639c089ff6c853d8d78a4d"> 616</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1ObjTypeInfo.html#a6e7780d4e2639c089ff6c853d8d78a4d">type</a>;</div><div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#abf6bbcccf73bfcd5b950803d349c4eb1"> 618</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ObjTypeInfo.html#abf6bbcccf73bfcd5b950803d349c4eb1">flags</a>;</div><div class="line"><a name="l00622"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a5ff63eb0654acd152f7d6c18618ee94a"> 622</a></span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a5ff63eb0654acd152f7d6c18618ee94a">maxOffsetLimit</a>;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> </div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordtype">void</span> resetTypeForHeapStaticObj(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> </div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* t, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> max);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> </div><div class="line"><a name="l00631"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#ace5fdb3701cb93df0f02aedc94e7e975"> 631</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#ace5fdb3701cb93df0f02aedc94e7e975">~ObjTypeInfo</a>()</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  }</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  </div><div class="line"><a name="l00636"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a"> 636</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="classSVF_1_1ObjTypeInfo.html#a706cdc47e78732853252d5a4af85653a">getType</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordflow">return</span> type;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  }</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> </div><div class="line"><a name="l00642"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4"> 642</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>()</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordflow">return</span> maxOffsetLimit;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  }</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> </div><div class="line"><a name="l00648"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092"> 648</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092">setMaxFieldOffsetLimit</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> limit)</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  {</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  maxOffsetLimit = limit;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> </div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div><div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49"> 655</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830">MEMTYPE</a> mask)</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  {</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  flags |= mask;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  }</div><div class="line"><a name="l00659"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a8e630eb30d05f665b998c6f9326d65cb"> 659</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a8e630eb30d05f665b998c6f9326d65cb">hasFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830">MEMTYPE</a> mask)</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  {</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">return</span> (flags & mask) == mask;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  }</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> </div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> </div><div class="line"><a name="l00667"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#ac99fa14fdf7bc0dd3e9ff36c7a3a351f"> 667</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#ac99fa14fdf7bc0dd3e9ff36c7a3a351f">isFunction</a>()</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keywordflow">return</span> hasFlag(FUNCTION_OBJ);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  }</div><div class="line"><a name="l00671"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#aa2855b69150287e5f04a7a683dc4c91f"> 671</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#aa2855b69150287e5f04a7a683dc4c91f">isGlobalObj</a>()</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  {</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordflow">return</span> hasFlag(GLOBVAR_OBJ);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  }</div><div class="line"><a name="l00675"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a3594dc1c1943dbac0ab72f2ff163c523"> 675</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a3594dc1c1943dbac0ab72f2ff163c523">isStaticObj</a>()</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">return</span> hasFlag(STATIC_OBJ);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  }</div><div class="line"><a name="l00679"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#aa568dc82decd28d2ef40785a4a647602"> 679</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#aa568dc82decd28d2ef40785a4a647602">isStack</a>()</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keywordflow">return</span> hasFlag(STACK_OBJ);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  }</div><div class="line"><a name="l00683"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a26c179394fbda9a9261d0bf3f52b619d"> 683</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a26c179394fbda9a9261d0bf3f52b619d">isHeap</a>()</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  {</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">return</span> hasFlag(HEAP_OBJ);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> </div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> </div><div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a40d6703875b370aed2c6dc41c0594af5"> 692</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a40d6703875b370aed2c6dc41c0594af5">isVarStruct</a>()</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="keywordflow">return</span> hasFlag(VAR_STRUCT_OBJ);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  }</div><div class="line"><a name="l00696"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a41f916ab4e3a2c163fca636eae948ce7"> 696</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a41f916ab4e3a2c163fca636eae948ce7">isConstantStruct</a>()</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  {</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keywordflow">return</span> hasFlag(CONST_STRUCT_OBJ);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  }</div><div class="line"><a name="l00700"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a06493939f797f122b70b90bbf22cad7a"> 700</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a06493939f797f122b70b90bbf22cad7a">isStruct</a>()</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  {</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keywordflow">return</span> hasFlag(VAR_STRUCT_OBJ) || hasFlag(CONST_STRUCT_OBJ);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  }</div><div class="line"><a name="l00704"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#aca1e900f9b0a774684af77666cf033e3"> 704</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#aca1e900f9b0a774684af77666cf033e3">isVarArray</a>()</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="keywordflow">return</span> hasFlag(VAR_ARRAY_OBJ);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  }</div><div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#ac1ee7a720959c0e97496870d6e759212"> 708</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#ac1ee7a720959c0e97496870d6e759212">isConstantArray</a>()</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  {</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">return</span> hasFlag(CONST_ARRAY_OBJ);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  }</div><div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a0627e8b9dda2e13cc77c334eefab21e1"> 712</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a0627e8b9dda2e13cc77c334eefab21e1">isArray</a>()</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  {</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keywordflow">return</span> hasFlag(VAR_ARRAY_OBJ) || hasFlag(CONST_ARRAY_OBJ);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  }</div><div class="line"><a name="l00716"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a8e6c60978df9828c1dcb54086e83edc1"> 716</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a8e6c60978df9828c1dcb54086e83edc1">isConstDataOrConstGlobal</a>()</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  {</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">return</span> hasFlag(CONST_GLOBAL_OBJ) || hasFlag(CONST_DATA);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  }</div><div class="line"><a name="l00720"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#a6f6c80f7d067a6082a9af04d2547cf34"> 720</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#a6f6c80f7d067a6082a9af04d2547cf34">isConstantData</a>()</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  {</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">return</span> hasFlag(CONST_DATA);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  }</div><div class="line"><a name="l00724"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjTypeInfo.html#ac5bae1e7917f415193a805e8d2e29320"> 724</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html#ac5bae1e7917f415193a805e8d2e29320">hasPtrObj</a>()</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">return</span> hasFlag(HASPTR_OBJ);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  }</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isNonPtrFieldObj(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>& ls);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> };</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> </div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> </div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span> <span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_SVF_FE_SYMBOLTABLEINFO_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_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>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1MemObj_html_a750770ea992d39b22c8b2dda9aff2eaf"><div class="ttname"><a href="classSVF_1_1MemObj.html#a750770ea992d39b22c8b2dda9aff2eaf">SVF::MemObj::typeInfo</a></div><div class="ttdeci">ObjTypeInfo * typeInfo</div><div class="ttdoc">Type information of this object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00412">SymbolTableInfo.h:412</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aff272bc1d00f2e57b7677d1826a31237"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aff272bc1d00f2e57b7677d1826a31237">SVF::SymbolTableInfo::SymbolTableInfo</a></div><div class="ttdeci">SymbolTableInfo(void)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00115">SymbolTableInfo.h:115</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a1b5fe6a59527983c80906261190fc864"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a1b5fe6a59527983c80906261190fc864">SVF::SymbolTableInfo::CallSiteSet</a></div><div class="ttdeci">Set< CallSite > CallSiteSet</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00077">SymbolTableInfo.h:77</a></div></div>
|
|
@@ -104,6 +104,7 @@ $(function() {
|
|
|
104
104
|
<div class="ttc" id="classSVF_1_1ObjTypeInfo_html_ac99fa14fdf7bc0dd3e9ff36c7a3a351f"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#ac99fa14fdf7bc0dd3e9ff36c7a3a351f">SVF::ObjTypeInfo::isFunction</a></div><div class="ttdeci">bool isFunction()</div><div class="ttdoc">Object attributes. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00667">SymbolTableInfo.h:667</a></div></div>
|
|
105
105
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a7d3001549966444622d5918e5811e89e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a7d3001549966444622d5918e5811e89e">SVF::SymbolTableInfo::toString</a></div><div class="ttdeci">static std::string toString(SYMTYPE symtype)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00518">SymbolTableInfo.cpp:518</a></div></div>
|
|
106
106
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a704b917b1e1dbaf9cd758fa9acc1083b"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b">SVF::SymbolTableInfo::isConstantObj</a></div><div class="ttdeci">static bool isConstantObj(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00196">SymbolTableInfo.h:196</a></div></div>
|
|
107
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a8fc42c2b02317621d6aeb3c5f52d3ee8"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">SVF::SymbolTableInfo::getFlattenedElemIdx</a></div><div class="ttdeci">u32_t getFlattenedElemIdx(const Type *T, u32_t origId)</div><div class="ttdoc">Flatterned element idx of an array or struct by considering stride. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00408">SymbolTableInfo.cpp:408</a></div></div>
|
|
107
108
|
<div class="ttc" id="namespaceSVF_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="Util_2BasicTypes_8h_source.html#l00102">BasicTypes.h:102</a></div></div>
|
|
108
109
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a6ddf057415f641bd8ad15bded1415776"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a6ddf057415f641bd8ad15bded1415776">SVF::SymbolTableInfo::createBlkObj</a></div><div class="ttdeci">MemObj * createBlkObj(SymID symId)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00372">SymbolTableInfo.cpp:372</a></div></div>
|
|
109
110
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ae577a32079a8e95d0185bfc45d919635"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">SVF::SymbolTableInfo::dl</a></div><div class="ttdeci">static DataLayout * dl</div><div class="ttdoc">Data layout on a target machine. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00085">SymbolTableInfo.h:85</a></div></div>
|
|
@@ -122,7 +123,6 @@ $(function() {
|
|
|
122
123
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af8fdaaa03cd2ae9b7d50f57bc678b8ba"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">SVF::SymbolTableInfo::mod</a></div><div class="ttdeci">SVFModule * mod</div><div class="ttdoc">Module. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00099">SymbolTableInfo.h:99</a></div></div>
|
|
123
124
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a65f49178a948380c2d6105178509a906"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a65f49178a948380c2d6105178509a906">SVF::SymbolTableInfo::getObj</a></div><div class="ttdeci">MemObj * getObj(SymID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00274">SymbolTableInfo.h:274</a></div></div>
|
|
124
125
|
<div class="ttc" id="namespaceSVF_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="SVFBasicTypes_8h_source.html#l00077">SVFBasicTypes.h:77</a></div></div>
|
|
125
|
-
<div class="ttc" id="namespaceSVF_html_abe09d99af006554a5c00803e9a89f9a6"><div class="ttname"><a href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">SVF::s64_t</a></div><div class="ttdeci">signed s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00080">SVFBasicTypes.h:80</a></div></div>
|
|
126
126
|
<div class="ttc" id="classSVF_1_1MemObj_html_a37f4e34b7f7dd6bfd4379cf3552e9046"><div class="ttname"><a href="classSVF_1_1MemObj.html#a37f4e34b7f7dd6bfd4379cf3552e9046">SVF::MemObj::symId</a></div><div class="ttdeci">SymID symId</div><div class="ttdoc">The unique id to represent this symbol. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00416">SymbolTableInfo.h:416</a></div></div>
|
|
127
127
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a05a05894819e9cad6ee0033a6695e35e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e">SVF::SymbolTableInfo::callSiteSet</a></div><div class="ttdeci">CallSiteSet callSiteSet</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00093">SymbolTableInfo.h:93</a></div></div>
|
|
128
128
|
<div class="ttc" id="classSVF_1_1StInfo_html_a1fa88b6bfbbd648df1b15f11d61578ed"><div class="ttname"><a href="classSVF_1_1StInfo.html#a1fa88b6bfbbd648df1b15f11d61578ed">SVF::StInfo::~StInfo</a></div><div class="ttdeci">~StInfo()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00528">SymbolTableInfo.h:528</a></div></div>
|
|
@@ -192,7 +192,6 @@ $(function() {
|
|
|
192
192
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ac449cd925dc05758c990179c0748e1d5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ac449cd925dc05758c990179c0748e1d5">SVF::SymbolTableInfo::varargSyms</a></div><div class="ttdeci">FunToIDMapTy & varargSyms()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00331">SymbolTableInfo.h:331</a></div></div>
|
|
193
193
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a87cc3289dd69e5378487dd9ae2c9e82e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">SVF::SymbolTableInfo::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00292">SymbolTableInfo.cpp:292</a></div></div>
|
|
194
194
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9e85d445e8b7b205134acd3874bba388"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVF::SVFUtil::isConstantData</a></div><div class="ttdeci">bool isConstantData(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#l00394">LLVMUtil.h:394</a></div></div>
|
|
195
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a6fe89e9d6c18a6aff6dffc1c78d08dff"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a6fe89e9d6c18a6aff6dffc1c78d08dff">SVF::SymbolTableInfo::getFlattenedElemIdx</a></div><div class="ttdeci">u32_t getFlattenedElemIdx(const Type *T, s64_t origId)</div><div class="ttdoc">Flatterned element idx of an array or struct by considering stride. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00408">SymbolTableInfo.cpp:408</a></div></div>
|
|
196
195
|
<div class="ttc" id="namespaceSVF_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="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
|
|
197
196
|
<div class="ttc" id="classSVF_1_1MemObj_html_a011f324448f2796acaff6d2e388582e9"><div class="ttname"><a href="classSVF_1_1MemObj.html#a011f324448f2796acaff6d2e388582e9">SVF::MemObj::refVal</a></div><div class="ttdeci">const Value * refVal</div><div class="ttdoc">The unique value of this symbol/variable. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00414">SymbolTableInfo.h:414</a></div></div>
|
|
198
197
|
<div class="ttc" id="classSVF_1_1MemObj_html_a3ab6f65ffbf6442daac4d3f70f2d3cb1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">SVF::MemObj::getId</a></div><div class="ttdeci">SymID getId() const</div><div class="ttdoc">Get the memory object id. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00437">SymbolTableInfo.h:437</a></div></div>
|