| 8 | namespace ftg { |
| 9 | |
| 10 | class ArgFlowAnalyzer : public PropAnalyzer { |
| 11 | |
| 12 | public: |
| 13 | ArgFlowAnalyzer(IndCallSolverMgr *Solver, |
| 14 | const std::vector<const llvm::Function *> &Funcs); |
| 15 | void analyze(const llvm::Argument &A) override; |
| 16 | const std::map<llvm::Argument *, std::shared_ptr<ArgFlow>> |
| 17 | getArgFlowMap() const; |
| 18 | |
| 19 | protected: |
| 20 | IndCallSolverMgr *Solver; |
| 21 | std::map<llvm::Argument *, std::shared_ptr<ArgFlow>> ArgFlowMap; |
| 22 | |
| 23 | void analyze(const std::vector<const llvm::Function *> &Funcs); |
| 24 | virtual void analyzeProperty(llvm::Argument &A) = 0; |
| 25 | llvm::ArrayType *getAsArrayType(llvm::Value &V) const; |
| 26 | llvm::StructType *getAsStructType(llvm::Value &V) const; |
| 27 | ArgFlow &getOrCreateArgFlow(llvm::Argument &A); |
| 28 | bool mayThrow(const llvm::BasicBlock &BB) const; |
| 29 | }; |
| 30 | |
| 31 | } // namespace ftg |
| 32 |
nothing calls this directly
no outgoing calls
no test coverage detected