|
| FlowGraph (const FlowGraph &other) |
|
| FlowGraph (FlowGraph &&other) |
|
std::pair< typename Graph::edge_descriptor, bool > | add_edge (const IR::MAU::Table *src, const IR::MAU::Table *dst, const cstring edge_label) |
|
void | add_sink_vertex () |
|
Graph::vertex_descriptor | add_vertex (const IR::MAU::Table *table) |
|
bool | can_reach (const IR::MAU::Table *t1, const IR::MAU::Table *t2) const |
|
void | clear () |
| Clears the state in this FlowGraph.
|
|
void | dump_viz (std::ostream &out, const DumpTableDetails *details=nullptr) |
|
std::vector< const IR::MAU::Table * > | find_path (const IR::MAU::Table *src, const IR::MAU::Table *dst) |
|
const cstring | get_ctrl_dependency_info (typename Graph::edge_descriptor edge) const |
|
const std::set< const IR::MAU::Table * > | get_dominators (const IR::MAU::Table *table) const |
|
const std::set< const IR::MAU::Table * > | get_tables () const |
|
Graph::vertex_descriptor | get_vertex (const IR::MAU::Table *tbl) const |
|
const IR::MAU::Table * | get_vertex (typename Graph::vertex_descriptor v) const |
|
bool | is_always_reached (const IR::MAU::Table *) const |
| Determines whether the given table is executed on all paths.
|
|
bool | is_empty () const |
| Determines whether this graph is empty.
|
|
std::vector< const IR::MAU::Table * > | topological_sort () const |
|
|
std::optional< std::map< const IR::MAU::Table *, std::set< const IR::MAU::Table * > > > | dominators |
| The dominator set for each table in the graph. Lazily computed.
|
|
bool | emptyFlowGraph = true |
|
Graph | g |
| The underlying Boost graph backing this FlowGraph.
|
|
std::optional< gress_t > | gress |
|
BFSPathFinder | path_finder |
| Helper for find_path.
|
|
Reachability< Graph > | reachability |
|
std::set< const IR::MAU::Table * > | tables |
| All tables in this graph, excluding the nullptr table, used to represent the sink node.
|
|
std::map< const IR::MAU::Table *, typename Graph::vertex_descriptor > | tableToVertex |
| Maps each table to its associated graph vertex.
|
|
ordered_map< const IR::MAU::Table *, int > | tableToVertexIndex |
| Maps each table to its corresponding vertex ID in the Boost graph.
|
|
Graph::vertex_descriptor | v_sink |
| The sink node, representing the exit point (i.e., entry to the deparser).
|
|
Graph::vertex_descriptor | v_source |
| The source node, representing the entry point (i.e., entry from the parser).
|
|
std::map< typename Graph::vertex_descriptor, const IR::MAU::Table * > | vertexToTable |
| Reverse map of above.
|
|
Represents a control-flow graph between the tables in a program, reflecting the logical control flow through the program.
std::ostream & operator<< |
( |
std::ostream & | out, |
|
|
const FlowGraph & | fg ) |
|
friend |
Copyright (C) 2024 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
SPDX-License-Identifier: Apache-2.0