17#ifndef FRONTENDS_P4_FRONTEND_H_
18#define FRONTENDS_P4_FRONTEND_H_
20#include "../common/options.h"
22#include "parseAnnotations.h"
23#include "unusedDeclarations.h"
66 return options.optimizationLevel > 0;
82 std::vector<DebugHook> hooks;
86 explicit FrontEnd(
FrontEndPolicy *policy) : policy(policy), hooks(policy->getDebugHooks()) {}
88 void addDebugHook(
const DebugHook &hook) { hooks.push_back(hook); }
90 const IR::P4Program *run(
const CompilerOptions &options,
const IR::P4Program *program,
91 std::ostream *outStream =
nullptr);
Definition frontends/common/options.h:31
Definition constantFolding.h:35
Definition frontends/p4/frontend.h:33
virtual ConstantFoldingPolicy * getConstantFoldingPolicy() const
Definition frontends/p4/frontend.h:72
virtual bool skipSideEffectOrdering() const
Definition frontends/p4/frontend.h:55
virtual std::vector< DebugHook > getDebugHooks() const
Definition frontends/p4/frontend.h:40
virtual StrengthReductionPolicy * getStrengthReductionPolicy() const
Definition frontends/p4/frontend.h:77
virtual bool foldInlinedFrom() const
Definition frontends/p4/frontend.h:59
virtual bool removeOpAssign() const
Definition frontends/p4/frontend.h:50
virtual ParseAnnotations * getParseAnnotations() const
Definition frontends/p4/frontend.h:45
virtual bool optimize(const CompilerOptions &options) const
Definition frontends/p4/frontend.h:65
Definition parseAnnotations.h:120
Definition unusedDeclarations.h:48
Definition strengthReduction.h:30
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
std::function< void(const char *manager, unsigned seqNo, const char *pass, const IR::Node *node)> DebugHook
Definition ir/pass_manager.h:38