P4C
The P4 Compiler
Loading...
Searching...
No Matches
eliminateTypedefs.h
1#ifndef MIDEND_ELIMINATETYPEDEFS_H_
2#define MIDEND_ELIMINATETYPEDEFS_H_
3
4#include "frontends/p4/typeChecking/typeChecker.h"
5
6namespace P4 {
7
13class DoReplaceTypedef final : public Transform {
14 const ReferenceMap *refMap;
15
16 public:
17 explicit DoReplaceTypedef(const ReferenceMap *refMap) : refMap(refMap) {}
18 const IR::Type *preorder(IR::Type_Name *type) override;
19};
20
21class EliminateTypedef final : public PassManager {
22 public:
23 EliminateTypedef(ReferenceMap *refMap, TypeMap *typeMap, TypeChecking *typeChecking = nullptr) {
24 if (!typeChecking) typeChecking = new TypeChecking(refMap, typeMap);
25 passes.push_back(typeChecking);
26 passes.push_back(new DoReplaceTypedef(refMap));
27 passes.push_back(new TypeChecking(refMap, typeMap, true));
28 setName("EliminateTypedefs");
29 }
30};
31
32} // namespace P4
33
34#endif /* MIDEND_ELIMINATETYPEDEFS_H_ */
Definition eliminateTypedefs.h:13
Definition eliminateTypedefs.h:21
Definition pass_manager.h:40
Class used to encode maps from paths to declarations.
Definition referenceMap.h:66
Definition visitor.h:424
Definition typeChecker.h:55
Definition typeMap.h:41
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24