P4C
The P4 Compiler
Loading...
Searching...
No Matches
resetHeaders.h
1
/*
2
* SPDX-FileCopyrightText: 2013 Barefoot Networks, Inc.
3
* Copyright 2013-present Barefoot Networks, Inc.
4
*
5
* SPDX-License-Identifier: Apache-2.0
6
*/
7
8
#ifndef FRONTENDS_P4_RESETHEADERS_H_
9
#define FRONTENDS_P4_RESETHEADERS_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
47
class
DoResetHeaders :
public
Transform
{
48
const
TypeMap
*typeMap;
49
IR::IndexedVector<IR::StatOrDecl>
insert;
50
51
public
:
52
static
void
generateResets(
const
TypeMap
*typeMap,
const
IR::Type *type,
53
const
IR::Expression *expr,
IR::Vector<IR::StatOrDecl>
*resets);
54
explicit
DoResetHeaders(
const
TypeMap
*typeMap) : typeMap(typeMap) {
55
CHECK_NULL(typeMap);
56
setName(
"DoResetHeaders"
);
57
}
58
const
IR::Node
*postorder(IR::Declaration_Variable *decl)
override
;
59
const
IR::Node
*postorder(IR::P4Control *control)
override
;
60
const
IR::Node
*postorder(IR::ParserState *state)
override
;
61
};
62
64
class
ResetHeaders :
public
PassManager {
65
public
:
66
explicit
ResetHeaders(
TypeMap
*typeMap) {
67
passes.push_back(
new
P4::TypeChecking
(
nullptr
, typeMap));
68
passes.push_back(
new
P4::DoResetHeaders
(typeMap));
69
setName(
"ResetHeaders"
);
70
}
71
};
72
73
}
// namespace P4
74
75
#endif
/* FRONTENDS_P4_RESETHEADERS_H_ */
P4::DoResetHeaders
Explicitly invalidate uninitialized header variables.
Definition
resetHeaders.h:47
P4::IR::IndexedVector
Definition
indexed_vector.h:31
P4::IR::Node
Definition
node.h:53
P4::IR::Vector
Definition
ir/vector.h:59
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
frontends
p4
resetHeaders.h
Generated by
1.13.2