P4C
The P4 Compiler
Loading...
Searching...
No Matches
expandEmit.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_EXPANDEMIT_H_
9
#define MIDEND_EXPANDEMIT_H_
10
11
#include "frontends/common/resolveReferences/resolveReferences.h"
12
#include "frontends/p4/typeChecking/typeChecker.h"
13
#include "ir/ir.h"
14
15
namespace
P4
{
16
36
class
DoExpandEmit :
public
Transform
,
public
ResolutionContext {
37
TypeMap
*typeMap;
38
39
public
:
40
explicit
DoExpandEmit(
TypeMap
*typeMap) : typeMap(typeMap) {
41
CHECK_NULL(typeMap);
42
setName(
"DoExpandEmit"
);
43
}
44
// return true if the expansion produced something "new"
45
bool
expandArg(
const
IR::Type *type,
const
IR::Argument *argument,
46
std::vector<const IR::Argument *> *result,
47
std::vector<const IR::Type *> *resultTypes);
48
const
IR::Node
*postorder(IR::MethodCallStatement *statement)
override
;
49
};
50
51
class
ExpandEmit :
public
PassManager {
52
public
:
53
explicit
ExpandEmit(
TypeMap
*typeMap,
TypeChecking
*typeChecking =
nullptr
) {
54
setName(
"ExpandEmit"
);
55
if
(!typeChecking) typeChecking =
new
TypeChecking
(
nullptr
, typeMap);
56
passes.push_back(typeChecking);
57
passes.push_back(
new
DoExpandEmit
(typeMap));
58
}
59
};
60
61
}
// namespace P4
62
63
#endif
/* MIDEND_EXPANDEMIT_H_ */
P4::DoExpandEmit
Definition
expandEmit.h:36
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
expandEmit.h
Generated by
1.13.2