55 : refMap(refMap), typeMap(typeMap), policy(policy) {
58 setName(
"RemoveComplexExpressions");
61 const IR::PathExpression *createTemporary(
const IR::Expression *expression);
62 const IR::Expression *simplifyExpression(
const IR::Expression *expression,
bool force);
69 const IR::Node *simpleStatement(IR::Statement *statement);
71 const IR::Node *postorder(IR::SelectExpression *expression)
override;
72 const IR::Node *preorder(IR::ParserState *state)
override {
76 const IR::Node *postorder(IR::ParserState *state)
override {
77 state->components.append(assignments);
80 const IR::Node *postorder(IR::MethodCallExpression *expression)
override;
81 const IR::Node *preorder(IR::P4Parser *parser)
override {
85 const IR::Node *postorder(IR::P4Parser *parser)
override {
86 if (newDecls.size() != 0) {
88 newDecls.append(parser->parserLocals);
89 parser->parserLocals = newDecls;
93 const IR::Node *preorder(IR::P4Control *control)
override;
94 const IR::Node *postorder(IR::P4Control *control)
override {
95 if (newDecls.size() != 0) {
97 newDecls.append(control->controlLocals);
98 control->controlLocals = newDecls;
102 const IR::Node *postorder(IR::Statement *statement)
override;
103 const IR::Node *postorder(IR::MethodCallStatement *statement)
override;
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24