P4C
The P4 Compiler
Loading...
Searching...
No Matches
eliminateSerEnums.h
1/*
2 * Copyright 2018 VMware, Inc.
3 * SPDX-FileCopyrightText: 2018 VMware, Inc.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef MIDEND_ELIMINATESERENUMS_H_
9#define MIDEND_ELIMINATESERENUMS_H_
10
11#include "frontends/p4/typeChecking/typeChecker.h"
12#include "ir/ir.h"
13
14namespace P4 {
15
19class DoEliminateSerEnums final : public Transform {
20 const TypeMap *typeMap;
21
22 public:
23 explicit DoEliminateSerEnums(const TypeMap *typeMap) : typeMap(typeMap) {
24 setName("DoEliminateSerEnums");
25 visitDagOnce = false;
26 }
27 const IR::Node *preorder(IR::Type_SerEnum *type) override;
28 const IR::Node *postorder(IR::Type_Name *type) override;
29 const IR::Node *postorder(IR::Member *expression) override;
30};
31
32class EliminateSerEnums final : public PassManager {
33 public:
34 explicit EliminateSerEnums(TypeMap *typeMap, TypeChecking *typeChecking = nullptr) {
35 if (!typeChecking) typeChecking = new TypeChecking(nullptr, typeMap);
36 passes.push_back(typeChecking);
37 passes.push_back(new DoEliminateSerEnums(typeMap));
38 passes.push_back(new ClearTypeMap(typeMap));
39 setName("EliminateSerEnums");
40 }
41};
42
43} // namespace P4
44
45#endif /* MIDEND_ELIMINATESERENUMS_H_ */
Definition typeChecker.h:32
Definition eliminateSerEnums.h:19
Definition node.h:53
Definition visitor.h:442
Definition typeChecker.h:55
Definition typeMap.h:32
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13