36class RemoveComplexExpressions :
public Transform,
public ResolutionContext {
44 explicit RemoveComplexExpressions(
P4::TypeMap *typeMap,
46 : typeMap(typeMap), policy(policy) {
48 setName(
"RemoveComplexExpressions");
51 auto rv = Transform::init_apply(node);
57 const IR::PathExpression *createTemporary(
const IR::Expression *expression);
58 const IR::Expression *simplifyExpression(
const IR::Expression *expression,
bool force);
65 const IR::Node *simpleStatement(IR::Statement *statement);
67 const IR::Node *postorder(IR::SelectExpression *expression)
override;
68 const IR::Node *preorder(IR::ParserState *state)
override {
72 const IR::Node *postorder(IR::ParserState *state)
override {
73 state->components.append(assignments);
76 const IR::Node *postorder(IR::MethodCallExpression *expression)
override;
77 const IR::Node *preorder(IR::P4Parser *parser)
override {
81 const IR::Node *postorder(IR::P4Parser *parser)
override {
82 if (newDecls.size() != 0) {
84 newDecls.append(parser->parserLocals);
85 parser->parserLocals = newDecls;
89 const IR::Node *preorder(IR::P4Control *control)
override;
90 const IR::Node *postorder(IR::P4Control *control)
override {
91 if (newDecls.size() != 0) {
93 newDecls.append(control->controlLocals);
94 control->controlLocals = newDecls;
98 const IR::Node *postorder(IR::Statement *statement)
override;
99 const IR::Node *postorder(IR::MethodCallStatement *statement)
override;
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13