17#ifndef MIDEND_SIMPLIFYSELECTLIST_H_
18#define MIDEND_SIMPLIFYSELECTLIST_H_
20#include "frontends/common/resolveReferences/referenceMap.h"
21#include "frontends/p4/typeChecking/typeChecker.h"
22#include "frontends/p4/typeMap.h"
35 void explode(
const IR::Expression *expression,
const IR::Type *type,
39 explicit SubstituteStructures(
TypeMap *typeMap) : typeMap(typeMap) {
41 setName(
"SubstituteStructures");
44 const IR::Node *postorder(IR::PathExpression *expression)
override;
71 void flatten(
const IR::Expression *expression,
unsigned *nestingIndex,
75 UnnestSelectList() { setName(
"UnnestSelectList"); }
77 const IR::Node *preorder(IR::SelectExpression *expression)
override;
78 const IR::Node *preorder(IR::P4Control *control)
override {
84class SimplifySelectList :
public PassManager {
88 if (!typeChecking) typeChecking =
new TypeChecking(refMap, typeMap);
89 passes.push_back(typeChecking);
91 passes.push_back(typeChecking);
93 setName(
"SimplifySelectList");
Class used to encode maps from paths to declarations.
Definition referenceMap.h:66
Definition simplifySelectList.h:32
Definition typeChecker.h:55
Definition simplifySelectList.h:64
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24