FreeTensor
Loading...
Searching...
No Matches
rename_var.h
Go to the documentation of this file.
1#ifndef FREE_TENSOR_RENAME_VAR_H
2#define FREE_TENSOR_RENAME_VAR_H
3
4#include <unordered_map>
5
6#include <mutator.h>
7
8namespace freetensor {
9
10class RenameVar : public Mutator {
11 protected:
12 std::unordered_map<std::string, std::string> rename_;
13
14 public:
16 RenameVar(const std::unordered_map<std::string, std::string> &rename)
17 : rename_(rename) {}
18
19 protected:
20 Stmt visit(const VarDef &op) override;
21 Expr visit(const Load &op) override;
22 Stmt visit(const Store &op) override;
23 Stmt visit(const ReduceTo &op) override;
24 Expr visit(const Var &op) override;
25 Stmt visit(const For &op) override;
26 Stmt visit(const Alloc &op) override;
27 Stmt visit(const Free &op) override;
28 Stmt visit(const MarkVersion &op) override;
29};
30
38inline Stmt
39renameVar(const Stmt &op,
40 const std::unordered_map<std::string, std::string> &rename) {
41 return RenameVar(rename)(op);
42}
43inline Stmt renameVar(const Stmt &op, const std::string &oldName,
44 const std::string &newName) {
45 return renameVar(op, {{oldName, newName}});
46}
49} // namespace freetensor
50
51#endif // FREE_TENSOR_RENAME_VAR_H
Definition: mutator.h:11
Definition: rename_var.h:10
RenameVar(const std::unordered_map< std::string, std::string > &rename)
Definition: rename_var.h:16
Stmt visit(const VarDef &op) override
Definition: rename_var.cc:5
RenameVar()
Definition: rename_var.h:15
std::unordered_map< std::string, std::string > rename_
Definition: rename_var.h:12
Definition: allocator.h:9
Ref< StmtNode > Stmt
Definition: ast.h:152
Stmt renameVar(const Stmt &op, const std::unordered_map< std::string, std::string > &rename)
Definition: rename_var.h:39