P4C
The P4 Compiler
Loading...
Searching...
No Matches
removeSelectBooleans.h
1/*
2 * Copyright 2017 VMware, Inc.
3 * SPDX-FileCopyrightText: 2017 VMware, Inc.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef MIDEND_REMOVESELECTBOOLEANS_H_
9#define MIDEND_REMOVESELECTBOOLEANS_H_
10
11#include "frontends/p4/typeChecking/typeChecker.h"
12#include "frontends/p4/typeMap.h"
13#include "ir/ir.h"
14
15namespace P4 {
16
24class DoRemoveSelectBooleans : public Transform {
25 const P4::TypeMap *typeMap;
26
27 const IR::Expression *addToplevelCasts(const IR::Expression *expression);
28
29 public:
30 explicit DoRemoveSelectBooleans(const P4::TypeMap *typeMap) : typeMap(typeMap) {
31 CHECK_NULL(typeMap);
32 setName("DoRemoveSelectBooleans");
33 }
34
35 const IR::Node *postorder(IR::SelectExpression *expression) override;
36 const IR::Node *postorder(IR::SelectCase *selectCase) override;
37};
38
39class RemoveSelectBooleans : public PassManager {
40 public:
41 explicit RemoveSelectBooleans(TypeMap *typeMap, TypeChecking *typeChecking = nullptr) {
42 if (!typeChecking) typeChecking = new TypeChecking(nullptr, typeMap);
43 passes.push_back(typeChecking);
44 passes.push_back(new DoRemoveSelectBooleans(typeMap));
45 passes.push_back(new ClearTypeMap(typeMap)); // some types have changed
46 setName("RemoveSelectBooleans");
47 }
48};
49
50} // namespace P4
51
52#endif /* MIDEND_REMOVESELECTBOOLEANS_H_ */
Definition typeChecker.h:32
Definition removeSelectBooleans.h:24
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