21#ifndef GCC_ANALYZER_SUPERGRAPH_H
22#define GCC_ANALYZER_SUPERGRAPH_H
149 std::unique_ptr<json::object>
to_json ()
const;
158 return *
map.get (fun);
256 std::unique_ptr<json::object>
to_json ()
const;
284 std::unique_ptr<operation> op,
292 ==
m_dest->get_function ());
300 const final override;
303 void set_op (std::unique_ptr<operation> op) {
m_op = std::move (op); }
306 bool user_facing)
const;
308 std::unique_ptr<json::object>
to_json ()
const;
322 std::unique_ptr<operation>
m_op;
370 const supernode &n ATTRIBUTE_UNUSED)
const
#define ENTRY_BLOCK_PTR_FOR_FN(FN)
Definition basic-block.h:194
#define EXIT_BLOCK_PTR_FOR_FN(FN)
Definition basic-block.h:195
static callsite_expr from_zero_based_param(int idx)
Definition supergraph.h:334
callsite_expr()
Definition supergraph.h:332
int m_val
Definition supergraph.h:357
static callsite_expr from_return_value()
Definition supergraph.h:339
bool return_value_p() const
Definition supergraph.h:349
callsite_expr(int val)
Definition supergraph.h:355
bool param_p() const
Definition supergraph.h:344
Definition supergraph.h:364
virtual void add_extra_objects(graphviz_out *gv) const
Definition supergraph.h:376
virtual void add_node_annotations(graphviz_out *gv, const supernode &n) const
Definition supergraph.h:369
virtual ~dot_annotator()=default
Definition exploded-graph.h:783
Definition analyzer-logging.h:34
Definition region-model-manager.h:32
Definition supergraph.h:84
void restore_uids() const
void make_uid_unique(gimple *stmt)
auto_vec< std::pair< gimple *, unsigned > > m_old_stmt_uids
Definition supergraph.h:90
Definition supergraph.h:281
::edge m_cfg_edge
Definition supergraph.h:323
void dump_dot(graphviz_out *gv, const dump_args_t &args) const final override
bool supports_bulk_merge_p() const
void dump(pretty_printer *pp) const
::edge get_any_cfg_edge() const
Definition supergraph.h:312
const operation * get_op() const
Definition supergraph.h:302
label_text get_description(bool user_facing) const
superedge(supernode *src, supernode *dest, std::unique_ptr< operation > op, ::edge cfg_edge)
Definition supergraph.h:283
void dump_label_to_pp(pretty_printer *pp, bool user_facing) const
std::unique_ptr< json::object > to_json() const
std::unique_ptr< operation > m_op
Definition supergraph.h:322
const supernode * get_dest_snode() const
Definition supergraph.h:310
virtual ~superedge()
Definition supergraph.h:295
void set_op(std::unique_ptr< operation > op)
Definition supergraph.h:303
Definition supergraph.h:105
std::unique_ptr< json::object > to_json() const
void fixup_locations(logger *)
int num_edges() const
Definition supergraph.h:152
supernode * add_node(function *fun, basic_block bb, logger *logger)
supernode * get_initial_node_for_block(basic_block bb) const
Definition supergraph.h:120
void sort_nodes(logger *logger)
unsigned get_num_snodes(const function *fun) const
Definition supergraph.h:154
void reorder_nodes_and_ids(const std::vector< supernode * > &ordering, logger *logger)
int m_next_snode_id
Definition supergraph.h:217
int num_nodes() const
Definition supergraph.h:151
supernode * get_node_for_function_exit(const function &fun) const
Definition supergraph.h:115
bb_to_node_t m_bb_to_final_node
Definition supergraph.h:204
std::vector< supernode * > m_snode_by_id
Definition supergraph.h:218
void log_stats(logger *logger) const
void dump_dot_to_pp(pretty_printer *pp, const dump_args_t &) const
gimple * populate_for_basic_block(basic_block bb, function *fun, logger *logger)
std::map<::edge, superedge * > m_edges_for_phis
Definition supergraph.h:207
ordered_hash_map< basic_block, supernode * > bb_to_node_t
Definition supergraph.h:202
supernode * get_node_for_function_entry(const function &fun) const
Definition supergraph.h:110
void add_sedges_for_cfg_edge(supernode *src, supernode *dest, ::edge e, gimple *control_stmt, region_model_manager &mgr, logger *logger)
void dump_dot_to_gv_for_bb(graphviz_out &gv, const dump_args_t &, basic_block, function *) const
function_to_num_snodes_t m_function_to_num_snodes
Definition supergraph.h:210
void dump_dot_to_gv_for_loop(graphviz_out &gv, const dump_args_t &, class loop *, function *) const
superedge * get_superedge_for_phis(::edge cfg_edge) const
Definition supergraph.h:137
hash_map< const function *, unsigned > function_to_num_snodes_t
Definition supergraph.h:209
std::map< const gimple *, supernode * > m_node_for_stmt
Definition supergraph.h:206
bb_to_node_t m_bb_to_initial_node
Definition supergraph.h:203
supernode * get_supernode_for_stmt(const gimple *stmt) const
Definition supergraph.h:130
supernode * get_final_node_for_block(basic_block bb) const
Definition supergraph.h:125
void delete_nodes(const std::set< supernode * > &snodes)
void dump_dot_to_file(FILE *fp, const dump_args_t &) const
supergraph(region_model_manager &mgr, logger *logger)
void dump_dot(const char *path, const dump_args_t &) const
saved_uids m_stmt_uids
Definition supergraph.h:212
Definition supergraph.h:224
const int m_original_id
Definition supergraph.h:269
location_t m_loc
Definition supergraph.h:266
supernode(function *fun, basic_block bb, int id)
Definition supergraph.h:226
tree m_label
Definition supergraph.h:270
bool entry_p() const
Definition supergraph.h:239
bool m_state_merger_node
Definition supergraph.h:272
const basic_block m_bb
Definition supergraph.h:265
location_t m_stmt_loc
Definition supergraph.h:267
void dump_dot_id(pretty_printer *pp) const
location_t get_location() const
Definition supergraph.h:258
tree get_label() const
Definition supergraph.h:260
void dump_dot(graphviz_out *gv, const dump_args_t &args) const override
bool exit_p() const
Definition supergraph.h:243
bool preserve_p() const
Definition supergraph.h:262
std::unique_ptr< json::object > to_json() const
function * get_function() const
Definition supergraph.h:237
void print(pretty_printer *pp) const
Definition supergraph.h:251
int m_id
Definition supergraph.h:268
bool m_preserve_p
Definition supergraph.h:271
function *const m_fun
Definition supergraph.h:264
node_t * m_dest
Definition digraph.h:112
dedge(node_t *src, node_t *dest)
Definition digraph.h:93
node_t * m_src
Definition digraph.h:111
supergraph_traits::dump_args_t dump_args_t
Definition digraph.h:91
auto_delete_vec< edge_t > m_edges
Definition digraph.h:151
auto_delete_vec< node_t > m_nodes
Definition digraph.h:150
supergraph_traits::dump_args_t dump_args_t
Definition digraph.h:125
digraph()
Definition digraph.h:128
supergraph_traits::dump_args_t dump_args_t
Definition digraph.h:46
Definition graphviz.h:385
Definition ordered-hash-map.h:35
Definition pretty-print.h:241
static struct path_prefix cpath path
Definition collect2.cc:514
struct basic_block_def * basic_block
Definition coretypes.h:372
class edge_def * edge
Definition coretypes.h:369
union tree_node * tree
Definition coretypes.h:97
static struct string2counter_map map[debug_counter_number_of_counters]
Definition dbgcnt.cc:39
Definition access-diagram.h:30
@ stmt
Definition checker-event.h:38
supergraph_dot_flags
Definition supergraph.h:52
@ SUPERGRAPH_DOT_SHOW_BBS
Definition supergraph.h:53
void pp_printf(pretty_printer *pp, const char *msg,...)
Definition pretty-print.cc:2683
dump_args_t(enum supergraph_dot_flags flags, const dot_annotator *node_annotator, const exploded_graph *eg)
Definition supergraph.h:66
const dot_annotator * m_node_annotator
Definition supergraph.h:75
enum supergraph_dot_flags m_flags
Definition supergraph.h:74
const exploded_graph * m_eg
Definition supergraph.h:76
Definition supergraph.h:60
supercluster cluster_t
Definition supergraph.h:78
supernode node_t
Definition supergraph.h:61
supergraph graph_t
Definition supergraph.h:63
superedge edge_t
Definition supergraph.h:62
Definition function.h:249
Definition collect2.cc:168
Definition ira-emit.cc:158
#define gcc_assert(EXPR)
Definition system.h:817
#define false
Definition system.h:891
#define NULL_TREE
Definition tree.h:318