FreeTensor
Loading...
Searching...
No Matches
merge_and_hoist_if.h
Go to the documentation of this file.
1#ifndef FREE_TENSOR_MERGE_AND_HOIST_IF_H
2#define FREE_TENSOR_MERGE_AND_HOIST_IF_H
3
4#include <unordered_set>
5
7#include <func.h>
8#include <mutator.h>
9
10namespace freetensor {
11
54class MergeAndHoistIf : public SymbolTable<Mutator> {
56
57 bool isFixPoint_ = true;
58
59 public:
60 bool isFixPoint() const { return isFixPoint_; }
61
62 protected:
63 Stmt visit(const StmtSeq &op) override;
64 Stmt visit(const VarDef &op) override;
65 Stmt visit(const For &op) override;
66};
67
68Stmt mergeAndHoistIf(const Stmt &op);
69
71
72} // namespace freetensor
73
74#endif // FREE_TENSOR_MERGE_AND_HOIST_IF_H
Definition: merge_and_hoist_if.h:54
bool isFixPoint() const
Definition: merge_and_hoist_if.h:60
Stmt visit(const StmtSeq &op) override
Definition: merge_and_hoist_if.cc:12
Definition: symbol_table.h:122
#define DEFINE_PASS_FOR_FUNC(pass)
Definition: func.h:88
Definition: allocator.h:9
Stmt mergeAndHoistIf(const Stmt &op)
Definition: merge_and_hoist_if.cc:104
Ref< StmtNode > Stmt
Definition: ast.h:152