46 const IR::PathExpression *createTemporary(
const IR::Expression *expression);
47 const IR::Expression *simplifyExpression(
const IR::Expression *expression,
bool force);
54 const IR::Node *simpleStatement(IR::Statement *statement);
59 : refMap(refMap), typeMap(typeMap), policy(policy) {
62 setName(
"RemoveComplexExpressions");
64 const IR::Node *postorder(IR::SelectExpression *expression)
override;
65 const IR::Node *preorder(IR::ParserState *state)
override {
69 const IR::Node *postorder(IR::ParserState *state)
override {
70 state->components.append(assignments);
73 const IR::Node *postorder(IR::MethodCallExpression *expression)
override;
74 const IR::Node *preorder(IR::P4Parser *parser)
override {
78 const IR::Node *postorder(IR::P4Parser *parser)
override {
79 if (newDecls.size() != 0) {
81 newDecls.append(parser->parserLocals);
82 parser->parserLocals = newDecls;
86 const IR::Node *preorder(IR::P4Control *control)
override;
87 const IR::Node *postorder(IR::P4Control *control)
override {
88 if (newDecls.size() != 0) {
90 newDecls.append(control->controlLocals);
91 control->controlLocals = newDecls;
95 const IR::Node *postorder(IR::Statement *statement)
override;
96 const IR::Node *postorder(IR::MethodCallStatement *statement)
override;