FreeTensor
Loading...
Searching...
No Matches
hoist_return_vars.h
Go to the documentation of this file.
1#ifndef FREE_TENSOR_HOIST_RETURN_VARS_H
2#define FREE_TENSOR_HOIST_RETURN_VARS_H
3
4#include <unordered_map>
5#include <unordered_set>
6
7#include <func.h>
8#include <mutator.h>
9
10namespace freetensor {
11
21class HoistReturnVars : public Mutator {
22 Func func_;
23 ID outMostLoop_;
24 std::vector<VarDef> toHoist_; // inner to outer
25
26 public:
27 HoistReturnVars(const Func &func) : func_(func) {}
28
29 protected:
30 Stmt visit(const VarDef &op) override;
31 Stmt visit(const For &op) override;
32};
33
34Func hoistReturnVars(const Func &func);
35
36} // namespace freetensor
37
38#endif // FREE_TENSOR_HOIST_RETURN_VARS_H
Definition: hoist_return_vars.h:21
HoistReturnVars(const Func &func)
Definition: hoist_return_vars.h:27
Stmt visit(const VarDef &op) override
Definition: hoist_return_vars.cc:6
Definition: id.h:18
Definition: mutator.h:11
Definition: allocator.h:9
Func hoistReturnVars(const Func &func)
Definition: hoist_return_vars.cc:53
Ref< FuncNode > Func
Definition: func.h:64
PBFunc::Serialized func_
Definition: prop_one_time_use.cc:22