P4C
The P4 Compiler
Loading...
Searching...
No Matches
P4::PassManager Class Reference

Inherits P4::Visitor, and P4::Backtrack.

Inherited by AddAlwaysRun, AddInitsInMAU, AddSelectorSalu, AddSliceInitialization, AllocateClot, ArithCompareAdjustment, AssignActionHandle, AssignCounterLRTValues, AutoAlias, BFN::ActionFunctionSetup, BFN::AddIntrinsicMetadata, BFN::AddMetadataParserStates, BFN::AddPsaBridgeMetadata, BFN::AddTnaBridgeMetadata, BFN::AdjustByteCountSetup, BFN::AlpmImplementation, BFN::AnnotateWithInHash, BFN::ApplyEvaluator, BFN::ArchTranslation, BFN::AttachTables, BFN::Backend, BFN::CheckDesignPattern, BFN::CheckDirectResourceInvocation, BFN::CheckVarbitAccess, BFN::CollectHardwareConstrainedFields, BFN::ConvertPhase0, BFN::DesugarVarbitExtract, BFN::DropPacketWithMirrorEngine, BFN::DynamicHashJson, BFN::ElimCasts, BFN::EliminateTuples, BFN::EvaluateForVar, BFN::EvaluatorPass, BFN::FindArchitecture, BFN::FixupMirrorMetadata, BFN::FixupResubmitMetadata, BFN::FoldConstantHashes, BFN::InitializeMirrorIOSelect, BFN::InjectTmpVar, BFN::MergePovBits, BFN::MidEnd, BFN::MidEndLast, BFN::NormalizeNativeProgram, BFN::PSA::ConvertNames, BFN::PSA::RewritePacketPath, BFN::PSA::RewriteParserVerify, BFN::PadFlexibleField, BFN::ParserEnforceDepthReq, BFN::PingPongGeneration, BFN::PortableSwitchTranslation, BFN::ProcessBackendPipe, BFN::RegisterReadWrite, BFN::RemoveActionParameters, BFN::RemoveSelectBooleans, BFN::ResolveSizeOfOperator, BFN::RewriteControlAndParserBlocks, BFN::RewriteEgressIntrinsicMetadataHeader, BFN::RewriteFlexibleStruct, BFN::SimpleSwitchTranslation, BFN::SimplifyEmitArgs, BFN::StrengthReduction, BFN::T2naArchTranslation, BFN::TnaArchTranslation, BFN::TranslatePhase0, BFN::TranslationFirst, BFN::TranslationLast, BFN::V1::ConvertNames, BFN::V1::InsertChecksumError, BFN::V1::ParserCounterSelectionConverter, BFN::V1::TranslateParserChecksums, BridgedPacking, BuildP4HashFunction, CalcParserCriticalPath, CheckForUnallocatedTemps, CheckParserMultiWrite, CheckUninitializedAndOverlayedReads, Clustering, CollectDarkCandidates, CollectParserUseDef, CollectPhvInfo, DarkOverlay, DeparserZeroOptimization, DumpJsonGraph, ElimUnused, ElimUnusedHeaderStackInfo, EliminateAllButLastWrite, FinalizeStageAllocation, FixupMirroredIntrinsicMetadata, FixupStatefulAlu, GTestTablePlacement, GatewayOpt, GatherAlignmentConstraints, GatherPackingConstraintFromSinglePipeline, GenerateOutputs, GuaranteeHashDistSize, HashGenSetup, HeaderMutex, InferPayloadOffset, InsertParserClotChecksums, InstructionAdjustment, InstructionSelection, LiveRangeShrinking, Logging::PassManager, MauPower::FinalizeMauPredDepsPower, MergeAlwaysRunActions, MergeDesugaredVarbitValids, MeterColorMapramAddress, MeterSetup, MultipleApply, MutexOverlay, P4::AddMissingIdAnnotations, P4::BMV2::MidEnd, P4::BindTypeVariables, P4::CheckConstants, P4::CheckCoreMethods, P4::CheckShadowing, P4::ConstantFolding, P4::ConvertEnums, P4::ConvertErrors, P4::DPDK::ByteAlignment, P4::DPDK::CollectLocalStructAndFlatten, P4::DPDK::CollectProgramStructure, P4::DPDK::ConvertActionSelectorAndProfile, P4::DPDK::ConvertInternetChecksum, P4::DPDK::ConvertLogicalExpression, P4::DPDK::ConvertLookahead, P4::DPDK::DpdkAddPseudoHeader, P4::DPDK::DpdkArchFirst, P4::DPDK::DpdkArchLast, P4::DPDK::DpdkHandleIPSec, P4::DPDK::DpdkMidEnd, P4::DPDK::EliminateHeaderCopy, P4::DPDK::EliminateUnusedAction, P4::DefaultArguments, P4::DefaultValues, P4::EBPF::Lower, P4::EliminateInvalidHeaders, P4::EliminateNewtype, P4::EliminateSerEnums, P4::EliminateSwitch, P4::EliminateTuples, P4::EliminateTypedef, P4::EvaluatorPass, P4::ExpandEmit, P4::ExpandLookahead, P4::FlattenHeaderUnion, P4::FlattenHeaders, P4::FlattenInterfaceStructs, P4::FlattenLogMsg, P4::GlobalCopyPropagation, P4::HSIndexSimplifier, P4::Inline, P4::InlineActions, P4::InlineFunctions, P4::InlinePass, P4::LocalCopyPropagation, P4::LocalizeAllActions, P4::MoveActionsToTables, P4::NestedStructs, P4::OrderArguments, P4::P4Test::MidEnd, P4::P4Tools::MidEnd, P4::P4V1::Converter, P4::P4V1::FixChecksum, P4::P4V1::FixMultiEntryPoint, P4::P4V1::FixParserCounter, P4::P4V1::InsertChecksumError, P4::P4V1::PostTranslationFix, P4::P4V1::TnaConverter, P4::ParseAnnotationBodies, P4::ParserRewriter, P4::ParsersUnroll, P4::PassIf [virtual], P4::PassRepeatUntil [virtual], P4::PassRepeated [virtual], P4::RemoveActionParameters, P4::RemoveAllUnusedHUDDeclarations, P4::RemoveAssertAssume, P4::RemoveDontcareArgs, P4::RemoveExits, P4::RemoveLeftSlices, P4::RemoveMiss, P4::RemoveParserIfs, P4::RemoveRedundantParsers, P4::RemoveReturns, P4::RemoveSelectBooleans, P4::ResetHeaders, P4::SetHeaders, P4::SimplifyComparisons, P4::SimplifyDefUse, P4::SimplifyIfStatement, P4::SimplifyKey, P4::SimplifyNestedIf, P4::SimplifySelectCases, P4::SimplifySelectList, P4::SimplifySwitch, P4::SingleArgumentSelect, P4::SpecializeGenericFunctions, P4::StaticAssert, P4::StrengthReduction, P4::StructInitializers, P4::SynthesizeActions, P4::TC::Backend, P4::TableHit, P4::TableKeyNames, P4::TypeCheck, P4::TypeChecking, P4::UniqueNames, P4::UniqueParameters, P4::UselessCasts, P4::graphs::MidEnd, PHV::AllocateTempsAndFinalizeLiverange, PHV::FieldSliceLiveRangeDB, PHV::Pragmas, PHV::v2::MetadataInitialization, PackConflicts, PackFlexibleHeaders, Parde::Lowered::LowerDeparserIR, Parde::Lowered::LowerParserIR, ParserCopyProp, PostMidEndLast, RemoveActionTables, ResetInvalidatedChecksumHeaders, ResolveNegativeExtract, RewriteParserMatchDefs, SetupAttachedAddressing, SplitAttachedInfo, SplitParserState, StatefulAttachmentSetup, SubstitutePackedHeaders, TableFindInjectedDependencies, TableLayout, TablePhvConstraints, TablePlacement, and UpdateParserWriteMode.

Classes

class  VisitorRef
 

Public Member Functions

 PassManager (const PassManager &)=default
 
 PassManager (const std::initializer_list< VisitorRef > &init)
 
 PassManager (PassManager &&)=default
 
void addDebugHook (DebugHook h, bool recursive=false)
 
void addDebugHooks (std::vector< DebugHook > hooks, bool recursive=false)
 
void addPasses (const std::initializer_list< VisitorRef > &init)
 
const IR::Nodeapply_visitor (const IR::Node *, const char *=0) override
 
bool backtrack (trigger &trig) override
 
PassManagerclone () const override
 
void early_exit ()
 
void listPasses (std::ostream &, cstring sep) const
 
bool never_backtracks () override
 
void removePasses (const std::vector< cstring > &exclude)
 
void setStopOnError (bool stop)
 
- Public Member Functions inherited from P4::Visitor
virtual bool check_clone (const Visitor *a)
 
virtual bool check_global (cstring)
 
virtual void clear_globals ()
 
virtual ControlFlowVisitorcontrolFlowVisitor ()
 
virtual void end_apply ()
 
virtual void end_apply (const IR::Node *root)
 
virtual void erase_global (cstring)
 
template<class T >
const T * findContext () const
 
template<class T >
const T * findContext (const Context *&c) const
 
template<class T >
const T * findOrigCtxt () const
 
template<class T >
const T * findOrigCtxt (const Context *&c) const
 
virtual Visitorflow_clone ()
 
virtual void flow_merge (Visitor &)
 
virtual bool flow_merge_closure (Visitor &)
 
virtual void flow_merge_global_from (cstring)
 
virtual void flow_merge_global_to (cstring)
 
const ContextgetChildContext () const
 
int getChildrenVisited () const
 
const ContextgetContext () const
 
int getContextDepth () const
 
const IR::NodegetCurrentNode () const
 
template<class T >
const T * getCurrentNode () const
 
const IR::NodegetOriginal () const
 
template<class T >
const T * getOriginal () const
 
template<class T >
const T * getParent () const
 
virtual bool has_flow_joins () const
 
profile_t init_apply (const IR::Node *root, const Context *parent_context)
 
bool isInContext (const IR::Node *n) const
 
virtual const char * name () const
 
template<class T >
void parallel_visit (const IR::Vector< T > &v, const char *name, int cidx)
 
template<class T >
void parallel_visit (const IR::Vector< T > &v, const char *name=0)
 
template<class T >
void parallel_visit (IR::Vector< T > &v, const char *name, int cidx)
 
template<class T >
void parallel_visit (IR::Vector< T > &v, const char *name=0)
 
void print_context () const
 
const VisitorsetCalledBy (const Visitor *visitor)
 
void setName (const char *name)
 
void visit (const IR::Node &n, const char *name, int cidx)
 
void visit (const IR::Node &n, const char *name=0)
 
void visit (const IR::Node *&n, const char *name, int cidx)
 
void visit (const IR::Node *&n, const char *name=0)
 
void visit (const IR::Node *const &n, const char *name, int cidx)
 
void visit (const IR::Node *const &n, const char *name=0)
 
void visit (IR::Node &n, const char *name, int cidx)
 
void visit (IR::Node &n, const char *name=0)
 
void visit (IR::Node *&, const char *=0, int=0)
 
template<class T , typename = std::enable_if_t<Util::has_SourceInfo_v<T> && !std::is_pointer_v<T>>, class... Args>
void warn (const int kind, const char *format, const T &node, Args &&...args)
 The const ref variant of the above.
 
template<class T , typename = std::enable_if_t<Util::has_SourceInfo_v<T>>, class... Args>
void warn (const int kind, const char *format, const T *node, Args &&...args)
 
bool warning_enabled (int warning_kind) const
 
- Public Member Functions inherited from P4::Backtrack

Protected Member Functions

profile_t init_apply (const IR::Node *root) override
 
void runDebugHooks (const char *visitorName, const IR::Node *node)
 
- Protected Member Functions inherited from P4::Visitor
virtual void init_join_flows (const IR::Node *)
 
virtual bool join_flows (const IR::Node *)
 
virtual void post_join_flows (const IR::Node *, const IR::Node *)
 
void visit_children (const IR::Node *, std::function< void()> fn)
 
virtual void visitAgain () const
 
virtual void visitOnce () const
 

Protected Attributes

safe_vector< DebugHookdebugHooks
 
safe_vector< Visitor * > passes
 
bool running = false
 
unsigned seqNo = 0
 
bool stop_on_error = true
 
- Protected Attributes inherited from P4::Visitor
bool dontForwardChildrenBeforePreorder = false
 
bool joinFlows = false
 
bool visitDagOnce = true
 

Additional Inherited Members

- Public Types inherited from P4::Visitor
typedef Visitor_Context Context
 
- Static Public Member Functions inherited from P4::Visitor
static cstring demangle (const char *)
 
static bool warning_enabled (const Visitor *visitor, int warning_kind)
 
- Public Attributes inherited from P4::Visitor
const Visitorcalled_by = nullptr
 
cstring internalName
 
SplitFlowVisit_base *& split_link
 
SplitFlowVisit_basesplit_link_mem = nullptr
 

Member Function Documentation

◆ apply_visitor()

const IR::Node * PassManager::apply_visitor ( const IR::Node * program,
const char * = 0 )
overridevirtual

Implements P4::Visitor.

◆ backtrack()

bool PassManager::backtrack ( trigger & trig)
overridevirtual

Implements P4::Backtrack.

◆ clone()

PassManager * P4::PassManager::clone ( ) const
inlineoverridevirtual

Reimplemented from P4::Visitor.

◆ init_apply()

profile_t P4::PassManager::init_apply ( const IR::Node * root)
inlineoverrideprotectedvirtual

Reimplemented from P4::Visitor.

◆ never_backtracks()

bool PassManager::never_backtracks ( )
overridevirtual

Reimplemented from P4::Backtrack.