8#ifndef FRONTENDS_P4_ACTIONSINLINING_H_
9#define FRONTENDS_P4_ACTIONSINLINING_H_
11#include "commonInlining.h"
12#include "frontends/common/resolveReferences/resolveReferences.h"
13#include "frontends/p4/typeChecking/typeChecker.h"
14#include "frontends/p4/unusedDeclarations.h"
23class DiscoverActionsInlining :
public Inspector,
public ResolutionContext {
24 ActionsInlineList *toInline;
27 DiscoverActionsInlining(ActionsInlineList *toInline,
P4::TypeMap *typeMap)
28 : toInline(toInline), typeMap(typeMap) {
31 setName(
"DiscoverActionsInlining");
33 bool preorder(
const IR::P4Parser *)
override {
return false; }
34 void postorder(
const IR::MethodCallStatement *mcs)
override;
38class ActionsInliner :
public AbstractInliner<ActionsInlineList, AInlineWorkList> {
39 std::unique_ptr<MinimalNameGenerator> nameGen;
40 AInlineWorkList::ReplacementMap *replMap;
43 ActionsInliner() : replMap(
nullptr) {}
45 const IR::Node *preorder(IR::P4Parser *cont)
override {
49 const IR::Node *preorder(IR::P4Action *action)
override;
50 const IR::Node *postorder(IR::P4Action *action)
override;
51 const IR::Node *preorder(IR::MethodCallStatement *statement)
override;
56class InlineActions :
public PassManager {
57 ActionsInlineList actionsToInline;
63 passes.push_back(
new InlineActionsDriver(&actionsToInline,
new ActionsInliner()));
65 setName(
"InlineActions");
72#include "frontends/p4-14/actionsInlining.h"
Definition p4/actionsInlining.h:38
Definition p4/actionsInlining.h:23
Definition commonInlining.h:169
Iterates UnusedDeclarations until convergence.
Definition unusedDeclarations.h:187
Definition unusedDeclarations.h:39
Definition commonInlining.h:30
Definition commonInlining.h:83
Definition commonInlining.h:57
Definition typeChecker.h:46
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13