FreeTensor
Loading...
Searching...
No Matches
inlining.h
Go to the documentation of this file.
1#ifndef FREE_TENSOR_INLINING_H
2#define FREE_TENSOR_INLINING_H
3
4#include <unordered_map>
5
7#include <mutator.h>
8
9namespace freetensor {
10
11class MakeInline : public TrackStmt<Mutator> {
13
14 ID def_;
15 std::string var_;
16 const std::unordered_map<Load, Expr> &replace_;
17
18 public:
19 MakeInline(const ID &def, const std::unordered_map<Load, Expr> &replace)
20 : def_(def), replace_(replace) {}
21
22 protected:
23 using BaseClass::visit;
24 Expr visit(const Load &op) override;
25 Stmt visit(const Store &op) override;
26 Stmt visit(const ReduceTo &op) override;
27 Stmt visit(const VarDef &op) override;
28};
29
30Stmt inlining(const Stmt &ast, const ID &def);
31
32} // namespace freetensor
33
34#endif // FREE_TENSOR_INLINING_H
Definition: id.h:18
Definition: inlining.h:11
MakeInline(const ID &def, const std::unordered_map< Load, Expr > &replace)
Definition: inlining.h:19
Expr visit(const Load &op) override
Definition: inlining.cc:16
virtual Stmt visit(const Any &op)
Definition: mutator.h:39
Definition: track_stmt.h:24
Definition: allocator.h:9
Stmt inlining(const Stmt &ast, const ID &def)
Definition: inlining.cc:62
Ref< StmtNode > Stmt
Definition: ast.h:152