53class SimplifyDefUse :
public PassManager {
58 Cloner() { setName(
"Cloner"); }
59 const IR::Node *postorder(IR::EmptyStatement *stat)
override {
63 return new IR::BlockStatement(stat->srcInfo);
65 const IR::Node *postorder(IR::BlockStatement *stat)
override {
69 if (stat->components.empty()) {
72 auto result =
new IR::BlockStatement(
73 stat->srcInfo, {new IR::Annotation(IR::Annotation::hiddenAnnotation, {})});
74 LOG2(
"Cloning " << getOriginal()->
id <<
" into " << result->id);
79 return Transform::postorder(stat);
92 passes.push_back(
new Cloner());
93 if (!typeChecking) typeChecking =
new TypeChecking(&refMap, typeMap);
96 passes.push_back(
new RemoveHidden());
97 setName(
"SimplifyDefUse");
static P4CContext & get()
Definition parser_options.cpp:523
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13