P4C
The P4 Compiler
Loading...
Searching...
No Matches
simplifySelectCases.h
1/*
2 * Copyright 2016 VMware, Inc.
3 * SPDX-FileCopyrightText: 2016 VMware, Inc.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef MIDEND_SIMPLIFYSELECTCASES_H_
9#define MIDEND_SIMPLIFYSELECTCASES_H_
10
11#include "frontends/p4/typeChecking/typeChecker.h"
12#include "ir/ir.h"
13
14namespace P4 {
15
34class DoSimplifySelectCases : public Transform, ResolutionContext {
35 const TypeMap *typeMap;
36 bool requireConstants;
37
38 void checkSimpleConstant(const IR::Expression *expr) const;
39
40 public:
41 DoSimplifySelectCases(const TypeMap *typeMap, bool requireConstants)
42 : typeMap(typeMap), requireConstants(requireConstants) {
43 setName("DoSimplifySelectCases");
44 }
45 const IR::Node *preorder(IR::SelectExpression *expression) override;
46};
47
48class SimplifySelectCases : public PassManager {
49 public:
50 SimplifySelectCases(TypeMap *typeMap, bool requireConstants,
51 TypeChecking *typeChecking = nullptr) {
52 if (!typeChecking) typeChecking = new TypeChecking(nullptr, typeMap);
53 passes.push_back(typeChecking);
54 passes.push_back(new DoSimplifySelectCases(typeMap, requireConstants));
55 setName("SimplifySelectCases");
56 }
57};
58
59} // namespace P4
60
61#endif /* MIDEND_SIMPLIFYSELECTCASES_H_ */
Definition simplifySelectCases.h:34
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