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

Inherits P4::Visitor.

Inherited by MapFieldToExpr, ActionPhvConstraints, AddIntrinsicConstraints, AddMauHeadersToHeaderMutexMatrix, AddSpecialConstraints, AllocatePOVBits, AllocateParserState::ParserStateAllocator::ChecksumAllocator::GetPacketRVal, BFN::ActionBodySetup, BFN::Architecture, BFN::AsmOutput, BFN::BackendConverter, BFN::CheckExternValidity, BFN::CheckHeaderAlignment, BFN::CheckPadAssignment, BFN::CheckPhaseZeroExtern, BFN::CheckRegisterActions, BFN::CheckReservedNames, BFN::CheckTableConstEntries, BFN::CheckUnimplementedFeatures, BFN::CheckUnsupported, BFN::CollectAlpmInfo, BFN::CollectBridgedFields, BFN::CollectPhase0Annotation, BFN::CollectPipelines, BFN::CollectVarbitExtract, BFN::CollectVariables, BFN::DetectMultiplePipelines, BFN::EnumOn32Bits::FindStatefulEnumOutputs, BFN::ErrorOnUnsupportedVarbitUse, BFN::ExtractChecksum, BFN::ExtractMetadata, BFN::FindDirectExterns, BFN::FindPaddingCandidate, BFN::FixP4Table, BFN::GetHeaderStackIndex, BFN::HasTableApply, BFN::IdentifyPadRequirements, BFN::PSA::AnalyzeProgram, BFN::PSA::FindPacketPath, BFN::PSA::LoadTargetArchitecture, BFN::PSA::TranslateProgram, BFN::ParseTna, BFN::ParserLoopsInfo::GetMaxLoopDepth, BFN::ParserPragmas, BFN::PathLinearizer, BFN::PingPongGeneration::PingPongFieldFinder, BFN::ResourcesLogging, BFN::SaveHashListExpression, BFN::SnapshotFieldFinder, BFN::V1::AnalyzeProgram, BFN::V1::CollectParserChecksums, BFN::V1::ConstructSymbolTable, BFN::V1::InsertChecksumError::ComputeEndStates, BFN::V1::InsertParserChecksums, BFN::V1::LoadTargetArchitecture, BuildGatewayMatch, BuildMutex, CalcCriticalPathClusters, CalcMaxPhysicalStages, CanBeIXBarExpr, CanonGatewayExpr::NeedNegate, CharacterizeParser, CheckDuplicateAttached, CheckFieldCorruption, CheckForHeaders, CheckInvalidate, ClearPhvInfo, CollectBridgedFieldsUse, CollectClotInfo, CollectConstraints, CollectEgressBridgedFields, CollectExtractedTogetherFields, CollectGatewayFields, CollectGlobalPragma, CollectHeaderValidity, CollectIngressBridgedFields, CollectInvalidatedHeaders, CollectMochaCandidates, CollectPardeConstraints, CollectPhvFields, CollectStridedHeaders, CollectUserSpecifiedCriticalStates, ComputeDarkInitialization, ComputeDependencies, ComputeFieldAlignments, ComputeValuesAtDeparser, ConstantLogicValue, ConstrainSatAddResultTempVars, CountStridedHeaderRefs, CreateMathUnit, CreateSaluApplyFunction, CreateSaluInstruction, DarkLiveRange, DetermineCandidateFields, DetermineCandidateHeaders, DumpPipe, DumpTableFlowGraph::CollectPhvReadsAndWrites, EmitHashExpression, ExcludeAliasedHeaderFields, ExcludeCsumOverlays, ExcludeCsumOverlaysPOV, ExcludeDeparsedIntrinsicMetadata, ExcludeDeparserOverlays, ExcludePragmaNoOverlayFields, ExtractBridgeInfo, FieldDefUse, FieldDefUse::ClearBeforeEgress, FieldDefUse::CollectAliasDestinations, FieldLevelOptimisation, FieldPovAnalysis, FindExpressionsForFields, FindInitializationNode, FindRecirculatedAllowingPort, FindUninitializedAndOverlayedReads, FormatHash::Output, FormatHash::SliceWidth, FormatHash::ZeroHash, GatherDeparserParameters, GatherDigestFields, GatherParserExtracts, GatherPhase0Fields, GetAllChecksumDest, GetMaxBufferPos, GetMinBufferPos, GetSelectFieldInfo, IXBar::FieldManagement, IXBarExprSeed, IdentifyDeparserZeroCandidates, JbayPhvAnalysis, LiveRangeReport, LogRepackedHeaders, Logging::Manifest, MapDestToInstruction, MapFieldToExpr, MapFieldToParserStates, MapTablesToActions, MarkDarkCandidates, MarkFieldAsBridged, MarkMutexPragmaFields, MarkPaddingAsDeparsed, MarkTimestampAndVersion, MauAsmOutput::EmitAction, MauAsmOutput::EmitAttached, MauInspector, MemoizeStage, MetadataLiveRange, NonMochaDarkFields, P4::AnalyzeParser, P4::ApplyOptionsPragmas, P4::BMV2::ActionConverter, P4::BMV2::CheckUnsupported, P4::BMV2::ControlConverter< arch >, P4::BMV2::ConvertGlobals, P4::BMV2::ConvertPnaToJson, P4::BMV2::ConvertPsaToJson, P4::BMV2::DeparserConverter, P4::BMV2::ExpressionConverter, P4::BMV2::HeaderConverter, P4::BMV2::ParseV1Architecture, P4::BMV2::ParserConverter, P4::BMV2::SharedActionSelectorCheck< arch >, P4::BuildResourceMap, P4::CheckExternInvocationCommon, P4::CheckNamedArgs, P4::ClearTypeMap, P4::CollectUsedDeclarations, P4::CompileTimeOperations, P4::ComputeDefUse, P4::ComputeParserCG, P4::ComputeWriteSet, P4::ContainsType, P4::ControlFlowVisitor::SetupJoinPoints, P4::ControlPlaneAPI::TypeSpecConverter, P4::Coverage::CollectNodes, P4::DPDK::CheckExternInvocation, P4::DPDK::CollectActionUses, P4::DPDK::CollectAddOnMissTable, P4::DPDK::CollectDirectCounterMeter, P4::DPDK::CollectErrors, P4::DPDK::CollectExternDeclaration, P4::DPDK::CollectIPSecInfo, P4::DPDK::CollectInternetChecksumInstance, P4::DPDK::CollectMetadataHeaderInfo, P4::DPDK::CollectTableInfo, P4::DPDK::CollectUseDefInfo, P4::DPDK::CollectUsedMetadataField, P4::DPDK::ConvertLookahead::Collect, P4::DPDK::ConvertStatementToDpdk, P4::DPDK::ConvertToDpdkControl, P4::DPDK::ConvertToDpdkParser, P4::DPDK::ConvertToString, P4::DPDK::DefActionValue, P4::DPDK::DpdkContextGenerator, P4::DPDK::EmitDpdkTableConfig, P4::DPDK::ExpressionUnroll, P4::DPDK::HaveNonHeaderChecksumArgs, P4::DPDK::HaveNonHeaderLargeOperandAssignment, P4::DPDK::IsDirectionMetadataUsed, P4::DPDK::LogicalExpressionUnroll, P4::DPDK::TypeWidthValidator, P4::DPDK::ValidateAddOnMissExterns, P4::DPDK::ValidateDirectCounterMeter, P4::DPDK::ValidateOperandSize, P4::Deprecated, P4::DiscoverActionsInlining, P4::DiscoverFunctionsInlining, P4::DiscoverInlining, P4::DiscoverStructure, P4::DoCheckConstants, P4::DoCheckCoreMethods, P4::EBPF::CodeGenInspector, P4::EBPF::ConvertToEBPFControlPSA, P4::EBPF::ConvertToEBPFDeparserPSA, P4::EBPF::ConvertToEBPFParserPSA, P4::EBPF::ConvertToEbpfPipeline, P4::EBPF::EBPFTablePSATernaryTableMaskGenerator, P4::EBPF::EBPFTablePsaPropertyVisitor, P4::EBPF::PSAErrorCodesGen, P4::Evaluator, P4::Explain, P4::ExpressionEvaluator, P4::FindActionParameters, P4::FindFunctionSpecializations, P4::FindGlobalActionUses, P4::FindHeaderTypesToReplace, P4::FindParameters, P4::FindRedundantParsers, P4::FindRepeatedActionUses, P4::FindSpecializations, P4::FindSymbols, P4::FindTypeSpecializations, P4::FindTypesInLogMsgInvocationToReplace, P4::FindTypesToReplace, P4::FindVariableValues, P4::FunctionsInliner::isLocalExpression, P4::HSIndexFinder, P4::HasExits, P4::HasTableApply, P4::IfInParser, P4::InspectDpdkProgram, P4::InspectPortableProgram, P4::IsLikeLeftValue, P4::IsNonConstantArrayIndex, P4::IsValid, P4::KeyNameGenerator, P4::MidEndLast, P4::MinimalNameGenerator, P4::P4Fmt::Attach, P4::P4Fmt::P4Formatter, P4::P4Tools::P4ProgramDCGCreator, P4::P4Tools::P4Testgen::AbstractStepper, P4::P4Tools::P4Testgen::Bmv2::MapDirectExterns, P4::P4Tools::P4Testgen::Bmv2::RefersToParser, P4::P4Tools::P4Testgen::ConcolicResolver, P4::P4Tools::P4Testgen::CoverableNodesScanner, P4::P4Tools::Test::NodeFinder< T >, P4::P4Tools::Z3Translator [virtual], P4::P4V1::CheckIfMultiEntryPoint, P4::P4V1::CollectBridgedFields, P4::P4V1::CollectDigestFields, P4::P4V1::ComputeCallGraph, P4::P4V1::ComputeTableCallGraph, P4::P4V1::DetectDuplicates, P4::P4V1::DiscoverStructure, P4::P4V1::FindHeaderReference, P4::P4V1::FindRecirculated, P4::P4V1::GetV1ModelVersion, P4::P4V1::InsertChecksumError::ComputeEndStates, P4::ParseDpdkArchitecture, P4::ParsePortableArchitecture, P4::ReadOnlyTypeInference [virtual], P4::ReadsWrites, P4::RemoveModifiedValues, P4::ResolveReferences, P4::SideEffects, P4::TC::ConvertToBackendIR, P4::TC::ConvertToEBPFControlPNA, P4::TC::ConvertToEBPFDeparserPNA, P4::TC::ConvertToEBPFParserPNA, P4::TC::ConvertToEbpfPipelineTC, P4::TC::InspectPnaProgram, P4::TC::IntrospectionGenerator, P4::TC::PNAErrorCodesGen, P4::TC::ParsePnaArchitecture, P4::TablesInActions, P4::TablesInKeys, P4::Test::TestWrite, P4::ToP4, P4::TypeCheck::InferActionArgsBottomUp, P4::TypeCheck::InferActionArgsTopDown, P4::TypeOccursVisitor, P4::UBPF::UBPFModel::getUBPFModelVersion, P4::ValidateMatchAnnotations, P4::ValidateParsedProgram, P4::ValidateStringAnnotations, P4::ValidateTableProperties, P4::ValidateValueSets, P4::exprUses, P4::graphs::Graphs, P4::hasSideEffects, PHV::ActionSourceTracker, PHV::AddAliasAllocation, PHV::FinalizePhysicalLiverange, PHV::UpdateDeparserStage, PHV::ValidateAllocation, PHV::v2::CollectPHVAllocationResult, PHV_Field_Operations, PackWithConstraintSolver, PadFixedSizeHeaders, PardePhvConstraints, Phv_Parde_Mau_Use, PragmaAlias, PragmaAtomic, PragmaBytePack, PragmaContainerSize, PragmaContainerType, PragmaDeparserZero, PragmaDoNotUseClot, PragmaMutuallyExclusive, PragmaNoInit, PragmaNoOverlay, PragmaNoPack, PragmaSolitary, PrintDependencyGraph, RemoveHeaderMutexesIfAllFieldsNotMutex, ResolveExtractSaves::FindRVal, ResolveOutOfBufferSaves::GetMaxSavedRVal, SaluOredIf, TablePlacement::SetupInfo, TofinoParserConstantExtract, and UpdateFieldAllocation.

Public Member Functions

const IR::Nodeapply_visitor (const IR::Node *, const char *name=0) override
 
profile_t init_apply (const IR::Node *root) override
 
virtual void loop_revisit (const IR::Node *)
 
virtual void postorder (const IR::Node *)
 
virtual bool preorder (const IR::Node *)
 
virtual void revisit (const IR::Node *)
 
void revisit_visited ()
 
bool visit_in_progress (const IR::Node *n) const
 
void visitAgain () const override
 
void visitOnce () const override
 
- Public Member Functions inherited from P4::Visitor
virtual bool check_global (cstring)
 
virtual void clear_globals ()
 
virtual Visitorclone () const
 
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
 

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
 
- 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)
 
- Protected Attributes inherited from P4::Visitor
bool dontForwardChildrenBeforePreorder = false
 
bool joinFlows = false
 
bool visitDagOnce = true
 

Member Function Documentation

◆ apply_visitor()

const IR::Node * Inspector::apply_visitor ( const IR::Node * n,
const char * name = 0 )
overridevirtual

Implements P4::Visitor.

◆ init_apply()

Visitor::profile_t Inspector::init_apply ( const IR::Node * root)
overridevirtual

Reimplemented from P4::Visitor.

Reimplemented in PHV::FinalizePhysicalLiverange.

◆ preorder()

virtual bool P4::Inspector::preorder ( const IR::Node * )
inlinevirtual

◆ visitAgain()

void Inspector::visitAgain ( ) const
overridevirtual

Reimplemented from P4::Visitor.

◆ visitOnce()

void Inspector::visitOnce ( ) const
overridevirtual

Reimplemented from P4::Visitor.