FreeTensor
Loading...
Searching...
No Matches
hoist_var_over_stmt_seq.h
Go to the documentation of this file.
1#ifndef FREE_TENSOR_HOIST_VAR_OVER_STMT_SEQ_H
2#define FREE_TENSOR_HOIST_VAR_OVER_STMT_SEQ_H
3
4#include <optional>
5#include <unordered_map>
6
7#include <func.h>
8#include <mutator.h>
9#include <pass/rename_var.h>
10
11namespace freetensor {
12
14 typedef RenameVar BaseClass;
15
16 std::optional<std::vector<ID>> togetherIds_;
17 bool isFixPoint_ = true;
18
19 public:
21 const std::optional<std::vector<ID>> &togetherIds = std::nullopt)
22 : togetherIds_(togetherIds) {}
23
24 bool isFixPoint() const { return isFixPoint_; }
25
26 protected:
27 using BaseClass::visit;
28 Stmt visit(const StmtSeq &op) override;
29};
30
45 const Stmt &op,
46 const std::optional<std::vector<ID>> &togetherIds = std::nullopt);
47
49
50} // namespace freetensor
51
52#endif // FREE_TENSOR_HOIST_VAR_OVER_STMT_SEQ_H
Definition: hoist_var_over_stmt_seq.h:13
HoistVarOverStmtSeq(const std::optional< std::vector< ID > > &togetherIds=std::nullopt)
Definition: hoist_var_over_stmt_seq.h:20
Stmt visit(const StmtSeq &op) override
Definition: hoist_var_over_stmt_seq.cc:12
bool isFixPoint() const
Definition: hoist_var_over_stmt_seq.h:24
Definition: rename_var.h:10
Stmt visit(const VarDef &op) override
Definition: rename_var.cc:5
#define DEFINE_PASS_FOR_FUNC(pass)
Definition: func.h:88
Definition: allocator.h:9
Ref< StmtNode > Stmt
Definition: ast.h:152
Stmt hoistVarOverStmtSeq(const Stmt &op, const std::optional< std::vector< ID > > &togetherIds=std::nullopt)
Definition: hoist_var_over_stmt_seq.cc:84