GCC Middle and Back End API Reference
|
#include <feasible-graph.h>
Public Types | |
typedef fg_traits::node_t | node_t |
typedef fg_traits::edge_t | edge_t |
typedef fg_traits::dump_args_t | dump_args_t |
typedef fg_traits::cluster_t | cluster_t |
Public Member Functions | |
feasible_graph () | |
feasible_node * | add_node (const exploded_node *enode, const feasibility_state &state, unsigned path_length) |
void | add_feasibility_problem (feasible_node *src_fnode, const exploded_edge *eedge, std::unique_ptr< rejected_constraint > rc) |
std::unique_ptr< exploded_path > | make_epath (feasible_node *fnode) const |
void | dump_feasible_path (const feasible_node &dst_fnode, const char *filename) const |
unsigned | get_num_infeasible () const |
void | log_stats (logger *logger) const |
void | dump_dot_to_pp (pretty_printer *pp, cluster_t *root_cluster, const dump_args_t &args) const |
void | dump_dot_to_file (FILE *fp, cluster_t *root_cluster, const dump_args_t &args) const |
void | dump_dot (const char *path, cluster_t *root_cluster, const dump_args_t &args) const |
void | add_node (node_t *node) |
void | add_edge (edge_t *edge) |
Data Fields | |
auto_delete_vec< node_t > | m_nodes |
auto_delete_vec< edge_t > | m_edges |
Private Member Functions | |
void | dump_feasible_path (const feasible_node &dst_fnode, pretty_printer *pp) const |
Private Attributes | |
unsigned | m_num_infeasible |
A digraph subclass for exploring trees of feasible paths through the egraph. This is actually a tree. The paths within the graph of feasible_nodes express feasible paths through the graph, and it also captures known infeasible edges, which is invaluable for debugging.
|
inherited |
|
inherited |
|
inherited |
|
inherited |
ana::feasible_graph::feasible_graph | ( | ) |
Add EDGE to this digraph, and to the preds/succs of its endpoints. Take ownership of EDGE.
void ana::feasible_graph::add_feasibility_problem | ( | feasible_node * | src_fnode, |
const exploded_edge * | eedge, | ||
std::unique_ptr< rejected_constraint > | rc ) |
feasible_node * ana::feasible_graph::add_node | ( | const exploded_node * | enode, |
const feasibility_state & | state, | ||
unsigned | path_length ) |
Add NODE to this DIGRAPH, taking ownership.
|
inlineinherited |
Write .dot information for this graph to a file at PATH, passing ARGS to the nodes and edges. If ROOT_CLUSTER is non-NULL, use it to organize the nodes into clusters.
|
inlineinherited |
Write .dot information for this graph to FP, passing ARGS to the nodes and edges. If ROOT_CLUSTER is non-NULL, use it to organize the nodes into clusters.
|
inlineinherited |
Write .dot information for this graph to PP, passing ARGS to the nodes and edges. If ROOT_CLUSTER is non-NULL, use it to organize the nodes into clusters.
void ana::feasible_graph::dump_feasible_path | ( | const feasible_node & | dst_fnode, |
const char * | filename ) const |
|
private |
|
inline |
References m_num_infeasible.
void ana::feasible_graph::log_stats | ( | logger * | logger | ) | const |
std::unique_ptr< exploded_path > ana::feasible_graph::make_epath | ( | feasible_node * | fnode | ) | const |
|
inherited |
|
inherited |
|
private |
Referenced by get_num_infeasible().