FreeTensor
Loading...
Searching...
No Matches
dedup_tape_names.h
Go to the documentation of this file.
1#ifndef FREE_TENSOR_DEDUP_TAPE_NAMES_H
2#define FREE_TENSOR_DEDUP_TAPE_NAMES_H
3
4#include <unordered_map>
5#include <unordered_set>
6
7#include <mutator.h>
8#include <visitor.h>
9
10namespace freetensor {
11
12class CountNames : public Visitor {
13 std::unordered_map<std::string, int> usedCnt_;
14
15 public:
16 const auto &usedCnt() const { return usedCnt_; }
17
18 protected:
19 void visit(const VarDef &op) override;
20 void visit(const For &op) override;
21};
22
23class DedupTapeNames : public Mutator {
24 const std::unordered_set<ID> &tapes_;
25 const std::unordered_map<std::string, int> &usedCnt_;
26 int dedupNumber_ = 0;
27
28 public:
29 DedupTapeNames(const std::unordered_set<ID> &tapes,
30 const std::unordered_map<std::string, int> &usedCnt)
31 : tapes_(tapes), usedCnt_(usedCnt) {}
32
33 protected:
34 Stmt visit(const VarDef &op) override;
35};
36
40Stmt dedupTapeNames(const Stmt &op, const std::unordered_set<ID> &tapes);
41
42} // namespace freetensor
43
44#endif // FREE_TENSOR_DEDUP_TAPE_NAMES_H
Definition: dedup_tape_names.h:12
void visit(const VarDef &op) override
Definition: dedup_tape_names.cc:6
const auto & usedCnt() const
Definition: dedup_tape_names.h:16
Definition: dedup_tape_names.h:23
Stmt visit(const VarDef &op) override
Definition: dedup_tape_names.cc:16
DedupTapeNames(const std::unordered_set< ID > &tapes, const std::unordered_map< std::string, int > &usedCnt)
Definition: dedup_tape_names.h:29
Definition: mutator.h:11
Definition: visitor.h:11
Definition: allocator.h:9
Ref< StmtNode > Stmt
Definition: ast.h:152
Stmt dedupTapeNames(const Stmt &op, const std::unordered_set< ID > &tapes)
Definition: dedup_tape_names.cc:30