P4C
The P4 Compiler
|
#include <parser_critical_path.h>
Public Member Functions | |
ParserCriticalPath (gress_t gress, ParserCriticalPathResult &rst) | |
ParserCriticalPath * | clone () const override |
Public Member Functions inherited from P4::ControlFlowVisitor | |
bool | check_global (cstring key) override |
void | clear_globals () override |
ControlFlowVisitor * | controlFlowVisitor () override |
void | erase_global (cstring key) override |
ControlFlowVisitor & | flow_clone () override |
virtual void | flow_copy (ControlFlowVisitor &)=0 |
const flow_join_info_t * | flow_join_status (const IR::Node *n) const |
void | flow_merge_global_from (cstring key) override |
void | flow_merge_global_to (cstring key) override |
bool | has_flow_joins () const override |
bool | isUnreachable () |
bool | operator!= (const ControlFlowVisitor &v) const |
virtual bool | operator== (const ControlFlowVisitor &) const |
void | restore_global (std::pair< cstring, ControlFlowVisitor * > saved) |
std::pair< cstring, ControlFlowVisitor * > | save_global (cstring key) |
void | setUnreachable () |
Public Member Functions inherited from P4::Visitor | |
virtual const IR::Node * | apply_visitor (const IR::Node *n, const char *name=0)=0 |
virtual bool | check_clone (const Visitor *a) |
virtual void | end_apply (const IR::Node *root) |
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 bool | flow_merge_closure (Visitor &) |
const Context * | getChildContext () const |
int | getChildrenVisited () const |
const Context * | getContext () const |
int | getContextDepth () const |
const IR::Node * | getCurrentNode () const |
template<class T > | |
const T * | getCurrentNode () const |
const IR::Node * | getOriginal () const |
template<class T > | |
const T * | getOriginal () const |
template<class T > | |
const T * | getParent () const |
virtual profile_t | init_apply (const IR::Node *root) |
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 Visitor & | setCalledBy (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 Attributes | |
ParserCriticalPathResult | result |
Public Attributes inherited from P4::Visitor | |
const Visitor * | called_by = nullptr |
cstring | internalName |
SplitFlowVisit_base *& | split_link |
SplitFlowVisit_base * | split_link_mem = nullptr |
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) |
Protected Types inherited from P4::ControlFlowVisitor | |
typedef std::map< const IR::Node *, flow_join_info_t > | flow_join_points_t |
Protected Member Functions inherited from P4::ControlFlowVisitor | |
virtual void | applySetupJoinPoints (const IR::Node *root) |
virtual bool | filter_join_point (const IR::Node *) |
void | init_join_flows (const IR::Node *root) override |
bool | join_flows (const IR::Node *n) override |
void | post_join_flows (const IR::Node *, const IR::Node *) override |
Protected Member Functions inherited from P4::Visitor | |
void | visit_children (const IR::Node *, std::function< void()> fn) |
virtual void | visitAgain () const |
virtual void | visitOnce () const |
Protected Attributes inherited from P4::ControlFlowVisitor | |
bool | BackwardsCompatibleBroken = false |
flow_join_points_t * | flow_join_points = 0 |
bool | unreachable = false |
Protected Attributes inherited from P4::Visitor | |
bool | dontForwardChildrenBeforePreorder = false |
bool | joinFlows = false |
bool | visitDagOnce = true |
Produces a ParserCriticalPathResult that contains names and statistics of states on the critical path, and the length (total bits extracted to PHV) of the critical path.
The $valid bits are counted as well, because they are stored in PHV. INGRESS/EGRESS need to be specified in the constructor.
|
inlineoverridevirtual |
Implements P4::ControlFlowVisitor.