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
15
namespace
P4
{
16
24
class
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
39
class
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_ */
P4::ClearTypeMap
Definition
typeChecker.h:32
P4::DoRemoveSelectBooleans
Definition
removeSelectBooleans.h:24
P4::IR::Node
Definition
node.h:53
P4::Transform
Definition
visitor.h:442
P4::TypeChecking
Definition
typeChecker.h:55
P4::TypeMap
Definition
typeMap.h:32
P4
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition
applyOptionsPragmas.cpp:13
midend
removeSelectBooleans.h
Generated by
1.13.2