P4C
The P4 Compiler
Loading...
Searching...
No Matches
removeMiss.h
1/*
2 * Copyright 2019 VMware, Inc.
3 * SPDX-FileCopyrightText: 2019 VMware, Inc.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef MIDEND_REMOVEMISS_H_
9#define MIDEND_REMOVEMISS_H_
10
11#include "frontends/common/resolveReferences/resolveReferences.h"
12#include "frontends/p4/typeChecking/typeChecker.h"
13#include "frontends/p4/typeMap.h"
14#include "ir/ir.h"
15
16namespace P4 {
17
22class DoRemoveMiss : public Transform, public ResolutionContext {
23 TypeMap *typeMap;
24
25 public:
26 explicit DoRemoveMiss(TypeMap *typeMap) : typeMap(typeMap) {
27 visitDagOnce = false;
28 CHECK_NULL(typeMap);
29 setName("DoRemoveMiss");
30 }
31 const IR::Node *preorder(IR::Member *expression) override;
32 const IR::Node *preorder(IR::IfStatement *statement) override;
33};
34
35class RemoveMiss : public PassManager {
36 public:
37 explicit RemoveMiss(TypeMap *typeMap, TypeChecking *typeChecking = nullptr) {
38 if (!typeChecking) typeChecking = new TypeChecking(nullptr, typeMap);
39 passes.push_back(typeChecking);
40 passes.push_back(new DoRemoveMiss(typeMap));
41 setName("RemoveMiss");
42 }
43};
44
45} // namespace P4
46
47#endif /* MIDEND_REMOVEMISS_H_ */
Definition removeMiss.h:22
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