|
42 | 42 | namespace psr { |
43 | 43 | class LLVMTypeHierarchy; |
44 | 44 | class LLVMProjectIRDB; |
| 45 | +class Resolver; |
45 | 46 |
|
46 | 47 | class LLVMBasedICFG; |
47 | 48 | template <> struct CFGTraits<LLVMBasedICFG> : CFGTraits<LLVMBasedCFG> {}; |
@@ -87,6 +88,11 @@ class LLVMBasedICFG : public LLVMBasedCFG, public ICFGBase<LLVMBasedICFG> { |
87 | 88 | LLVMAliasInfoRef PT = nullptr, |
88 | 89 | Soundness S = Soundness::Soundy, |
89 | 90 | bool IncludeGlobals = true); |
| 91 | + explicit LLVMBasedICFG(LLVMProjectIRDB *IRDB, Resolver &CGResolver, |
| 92 | + llvm::ArrayRef<std::string> EntryPoints = {}, |
| 93 | + LLVMTypeHierarchy *TH = nullptr, |
| 94 | + Soundness S = Soundness::Soundy, |
| 95 | + bool IncludeGlobals = true); |
90 | 96 |
|
91 | 97 | /// Creates an ICFG with an already given call-graph |
92 | 98 | explicit LLVMBasedICFG(CallGraph<n_t, f_t> CG, LLVMProjectIRDB *IRDB, |
@@ -157,6 +163,10 @@ class LLVMBasedICFG : public LLVMBasedCFG, public ICFGBase<LLVMBasedICFG> { |
157 | 163 | [[nodiscard]] llvm::Function *buildCRuntimeGlobalCtorsDtorsModel( |
158 | 164 | llvm::Module &M, llvm::ArrayRef<llvm::Function *> UserEntryPoints); |
159 | 165 |
|
| 166 | + void initialize(LLVMProjectIRDB *IRDB, Resolver &CGResolver, |
| 167 | + llvm::ArrayRef<std::string> EntryPoints, |
| 168 | + LLVMTypeHierarchy *TH, Soundness S, bool IncludeGlobals); |
| 169 | + |
160 | 170 | // --- |
161 | 171 |
|
162 | 172 | CallGraph<const llvm::Instruction *, const llvm::Function *> CG; |
|
0 commit comments