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
15namespace P4 {
16
47class DoResetHeaders : public Transform {
48 const TypeMap *typeMap;
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
64class 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_ */
Explicitly invalidate uninitialized header variables.
Definition resetHeaders.h:47
Definition indexed_vector.h:31
Definition node.h:53
Definition ir/vector.h:59
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