FreeTensor
Loading...
Searching...
No Matches
all_side_effect_intrinsics.h
Go to the documentation of this file.
1#ifndef FREE_TENSOR_ALL_SIDE_EFFECT_INTRINSICS_H
2#define FREE_TENSOR_ALL_SIDE_EFFECT_INTRINSICS_H
3
4#include <unordered_set>
5
6#include <visitor.h>
7
8namespace freetensor {
9
14 public:
15 std::unordered_set<Intrinsic> sideEffectIntrinsics_;
16
17 protected:
18 void visit(const Intrinsic &op) override {
19 if (op->hasSideEffect_)
20 sideEffectIntrinsics_.insert(op);
22 }
23};
24
25template <typename T>
26std::unordered_set<Intrinsic> allSideEffectIntrinsics(T &&op) {
28 finder(op);
29 return std::move(finder.sideEffectIntrinsics_);
30}
31
32} // namespace freetensor
33
34#endif
Definition: all_side_effect_intrinsics.h:13
std::unordered_set< Intrinsic > sideEffectIntrinsics_
Definition: all_side_effect_intrinsics.h:15
void visit(const Intrinsic &op) override
Definition: all_side_effect_intrinsics.h:18
Definition: ref.h:24
Definition: visitor.h:11
virtual void visit(const Any &op)
Definition: visitor.h:36
Definition: allocator.h:9
std::unordered_set< Intrinsic > allSideEffectIntrinsics(T &&op)
Definition: all_side_effect_intrinsics.h:26