80 friend class RemoveUnusedPolicy;
81 RemoveUnusedDeclarations(
const ReferenceMap *refMap,
bool warn)
82 : refMap(refMap),
warned(warn ? new
std::set<const IR::Node *> : nullptr) {
84 setName(
"RemoveUnusedDeclarations");
88 using Transform::init_apply;
89 using Transform::postorder;
90 using Transform::preorder;
94 const IR::Node *preorder(IR::P4Control *cont)
override;
95 const IR::Node *preorder(IR::P4Parser *cont)
override;
96 const IR::Node *preorder(IR::P4Table *cont)
override;
97 const IR::Node *preorder(IR::ParserState *state)
override;
98 const IR::Node *preorder(IR::Type_Enum *type)
override;
99 const IR::Node *preorder(IR::Type_SerEnum *type)
override;
101 const IR::Node *preorder(IR::Declaration_Instance *decl)
override;
102 const IR::Node *preorder(IR::Method *decl)
override;
105 const IR::Node *preorder(IR::Type_Error *type)
override {
109 const IR::Node *preorder(IR::Declaration_MatchKind *decl)
override {
113 const IR::Node *preorder(IR::Type_StructLike *type)
override {
114 visit(type->typeParameters);
118 const IR::Node *preorder(IR::Type_Extern *type)
override {
119 visit(type->typeParameters);
123 const IR::Node *preorder(IR::Type_Method *type)
override {
124 visit(type->typeParameters);
128 const IR::Node *preorder(IR::Parameter *param)
override;
129 const IR::Node *preorder(IR::NamedExpression *ne)
override {
return ne; }
130 const IR::Node *preorder(IR::Type_Var *p)
override {
132 return warnIfUnused(p);
135 const IR::Node *preorder(IR::Declaration_Variable *decl)
override;
136 const IR::Node *preorder(IR::Declaration *decl)
override {
return process(decl); }
137 const IR::Node *preorder(IR::Type_Declaration *decl)
override {
return process(decl); }
138 cstring ifSystemFile(
const IR::Node *node);
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24