-
Notifications
You must be signed in to change notification settings - Fork 497
/
const_prop.h
36 lines (28 loc) · 975 Bytes
/
const_prop.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Copyright (C) 2022-2024 Exaloop Inc. <https://exaloop.io>
#pragma once
#include "codon/cir/transform/pass.h"
namespace codon {
namespace ir {
namespace transform {
namespace folding {
/// Constant propagation pass.
class ConstPropPass : public OperatorPass {
private:
/// Key of the reaching definition analysis
std::string reachingDefKey;
/// Key of the global variables analysis
std::string globalVarsKey;
public:
static const std::string KEY;
/// Constructs a constant propagation pass.
/// @param reachingDefKey the reaching definition analysis' key
/// @param globalVarsKey global variables analysis' key
ConstPropPass(const std::string &reachingDefKey, const std::string &globalVarsKey)
: reachingDefKey(reachingDefKey), globalVarsKey(globalVarsKey) {}
std::string getKey() const override { return KEY; }
void handle(VarValue *v) override;
};
} // namespace folding
} // namespace transform
} // namespace ir
} // namespace codon