P4C
The P4 Compiler
Loading...
Searching...
No Matches
p4tools/common/compiler/midend.h
1/*
2 * SPDX-FileCopyrightText: 2022 The P4 Language Consortium
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef BACKENDS_P4TOOLS_COMMON_COMPILER_MIDEND_H_
8#define BACKENDS_P4TOOLS_COMMON_COMPILER_MIDEND_H_
9
10#include "frontends/common/options.h"
11#include "frontends/common/resolveReferences/referenceMap.h"
12#include "frontends/p4/typeMap.h"
13#include "ir/ir.h"
14#include "ir/pass_manager.h"
15#include "ir/visitor.h"
16#include "midend/convertEnums.h"
17#include "midend/convertErrors.h"
18
19namespace P4::P4Tools {
20
30class MidEnd : public PassManager {
31 protected:
32 P4::ReferenceMap refMap;
33 P4::TypeMap typeMap;
34
38 virtual Visitor *mkConvertEnums();
39
43 virtual Visitor *mkConvertErrors();
44
46 virtual Visitor *mkConvertKeys();
47
51
55
60 virtual bool localCopyPropPolicy(const Visitor::Context *ctx, const IR::Expression *expr);
61
62 public:
63 explicit MidEnd(const CompilerOptions &);
64
67
70
73 virtual void addDefaultPasses();
74
77 virtual void addNonTypeCheckingPasses();
78};
79
80} // namespace P4::P4Tools
81
82#endif /* BACKENDS_P4TOOLS_COMMON_COMPILER_MIDEND_H_ */
Definition convertEnums.h:20
Definition convertErrors.h:31
Definition frontends/common/options.h:31
P4::TypeMap * getTypeMap()
Retrieve the type map used in the mid end.
Definition p4tools/common/compiler/midend.cpp:91
virtual Visitor * mkConvertKeys()
Provides a target-specific pass that simplifies keys in table calls under a custom policy.
Definition p4tools/common/compiler/midend.cpp:58
virtual Visitor * mkConvertEnums()
Definition p4tools/common/compiler/midend.cpp:52
virtual P4::ChooseErrorRepresentation * mkConvertErrorPolicy()
Definition p4tools/common/compiler/midend.cpp:73
virtual Visitor * mkConvertErrors()
Definition p4tools/common/compiler/midend.cpp:54
virtual P4::ChooseEnumRepresentation * mkConvertEnumsPolicy()
Definition p4tools/common/compiler/midend.cpp:62
virtual void addNonTypeCheckingPasses()
Definition p4tools/common/compiler/midend.cpp:169
P4::ReferenceMap * getRefMap()
Retrieve the reference map used in the mid end.
Definition p4tools/common/compiler/midend.cpp:89
virtual void addDefaultPasses()
Definition p4tools/common/compiler/midend.cpp:93
virtual bool localCopyPropPolicy(const Visitor::Context *ctx, const IR::Expression *expr)
Definition p4tools/common/compiler/midend.cpp:84
Class used to encode maps from paths to declarations.
Definition referenceMap.h:67
Definition typeMap.h:32
Definition common/compiler/compiler_result.cpp:7