P4C
The P4 Compiler
Loading...
Searching...
No Matches
eliminateTypedefs.h
1/*
2 * SPDX-FileCopyrightText: 2020 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef MIDEND_ELIMINATETYPEDEFS_H_
8#define MIDEND_ELIMINATETYPEDEFS_H_
9
10#include "frontends/common/resolveReferences/resolveReferences.h"
11#include "frontends/p4/typeChecking/typeChecker.h"
12
13namespace P4 {
14
20class DoReplaceTypedef final : public Transform, public ResolutionContext {
21 public:
22 DoReplaceTypedef() = default;
23 const IR::Type *preorder(IR::Type_Name *type) override;
24};
25
26class EliminateTypedef final : public PassManager {
27 public:
28 EliminateTypedef(TypeMap *typeMap, TypeChecking *typeChecking = nullptr) {
29 if (!typeChecking) typeChecking = new TypeChecking(nullptr, typeMap);
30 passes.push_back(typeChecking);
31 passes.push_back(new DoReplaceTypedef);
32 passes.push_back(new TypeChecking(nullptr, typeMap, true));
33 passes.push_back(new ClearTypeMap(typeMap));
34 setName("EliminateTypedefs");
35 }
36};
37
38} // namespace P4
39
40#endif /* MIDEND_ELIMINATETYPEDEFS_H_ */
Definition typeChecker.h:32
Definition eliminateTypedefs.h:20
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