1
0
mirror of https://github.com/exaloop/codon.git synced 2025-06-03 15:03:52 +08:00
2021-09-27 14:02:44 -04:00

34 lines
640 B
C++

#pragma once
#include <memory>
#include <unordered_map>
#include "rule.h"
#include "sir/transform/pass.h"
namespace seq {
namespace ir {
namespace transform {
namespace folding {
class FoldingPass : public OperatorPass, public Rewriter {
public:
/// Constructs a folding pass.
FoldingPass() : OperatorPass(/*childrenFirst=*/true) {}
static const std::string KEY;
std::string getKey() const override { return KEY; }
void run(Module *m) override;
void handle(CallInstr *v) override;
private:
void registerStandardRules(Module *m);
};
} // namespace folding
} // namespace transform
} // namespace ir
} // namespace seq