X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Firedges.h;h=31c28165bbbd9dea513264893de3fb56265dc705;hb=9ec98298a0bf99ccb9533365dd7245e0a380f3df;hp=639fd9d06e02e41a13722b9e4e663d74f892ef6b;hpb=1ec30d95387eb392ba5a1adc7958ebd91383d59c;p=libfirm diff --git a/include/libfirm/iredges.h b/include/libfirm/iredges.h index 639fd9d06..31c28165b 100644 --- a/include/libfirm/iredges.h +++ b/include/libfirm/iredges.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -104,7 +104,7 @@ int get_irn_n_edges(const ir_node *irn); * @param edge The edge. * @return The position in the in array of that edges source. */ -extern int get_edge_src_pos(const ir_edge_t *edge); +int get_edge_src_pos(const ir_edge_t *edge); /** * Get the edge object of an outgoing edge at a node. @@ -121,32 +121,44 @@ const ir_edge_t *get_irn_edge_kind(ir_graph *irg, const ir_node *irn, int pos, i * @param irn The node. * @param kind The kind. */ -extern int get_irn_n_edges_kind(const ir_node *irn, ir_edge_kind_t kind); - +int get_irn_n_edges_kind(const ir_node *irn, ir_edge_kind_t kind); /** * Check, if the out edges are activated. - * @param irg The graph. - * @param kind The edge kind. + * + * @param irg The graph. + * @param kind The edge kind. + * * @return 1, if the edges are present for the given irg, 0 if not. */ -extern int edges_activated_kind(const ir_graph *irg, ir_edge_kind_t kind); +int edges_activated_kind(const ir_graph *irg, ir_edge_kind_t kind); /** * Activate the edges for an irg. - * @param irg The graph to activate the edges for. - * @param kind The edge kind. + * + * @param irg The graph to activate the edges for. + * @param kind The edge kind. */ -extern void edges_activate_kind(ir_graph *irg, ir_edge_kind_t kind); +void edges_activate_kind(ir_graph *irg, ir_edge_kind_t kind); /** * Deactivate the edges for an irg. - * @param irg The graph. - * @param kind The edge kind. + * + * @param irg The graph. + * @param kind The edge kind. */ -extern void edges_deactivate_kind(ir_graph *irg, ir_edge_kind_t kind); +void edges_deactivate_kind(ir_graph *irg, ir_edge_kind_t kind); -extern void edges_reroute_kind(ir_node *old, ir_node *nw, ir_edge_kind_t kind, ir_graph *irg); +/** + * Reroute edges of a specified kind from an old node to + * a new one. + * + * @param old the old node + * @param nw the new node + * @param kind the edge kind + * @param irg the graph on which the rerouting occurs + */ +void edges_reroute_kind(ir_node *old, ir_node *nw, ir_edge_kind_t kind, ir_graph *irg); /** * Verifies the out edges of graph @p irg. @@ -155,9 +167,7 @@ extern void edges_reroute_kind(ir_node *old, ir_node *nw, ir_edge_kind_t kind, i int edges_verify(ir_graph *irg); /** - * Set edge verification flag. - */ void edges_init_dbg(int do_dbg); @@ -187,25 +197,53 @@ const ir_edge_t *get_irn_edge(ir_graph *irg, const ir_node *src, int pos); #endif /** -* Activate all the edges for an irg. -* @param irg The graph to activate the edges for. -*/ -extern void edges_activate(ir_graph *irg); + * Activate all the edges for an irg. + * @param irg The graph to activate the edges for. + */ +void edges_activate(ir_graph *irg); /** -* Deactivate all the edges for an irg. -* @param irg The graph. -*/ -extern void edges_deactivate(ir_graph *irg); + * Deactivate all the edges for an irg. + * @param irg The graph. + */ +void edges_deactivate(ir_graph *irg); -extern int edges_assure(ir_graph *irg); +/** + * Ensure that edges are activated. + * + * @param irg the IR graph + * + * @return 0 if edges was deactivated before the call, 1 else + */ +int edges_assure(ir_graph *irg); -extern void edges_node_deleted(ir_node *irn, ir_graph *irg); +/** + * Ensure that edges of a given kind are activated. + * + * @param irg the IR graph + * @param kind the edge kind + * + * @return 0 if edges was deactivated before the call, 1 else + */ +int edges_assure_kind(ir_graph *irg, ir_edge_kind_t kind); + +void edges_node_deleted(ir_node *irn, ir_graph *irg); /** -* Notify normal and block edges. -*/ -extern void edges_notify_edge(ir_node *src, int pos, ir_node *tgt, ir_node *old_tgt, ir_graph *irg); + * Notify normal and block edges. + */ +void edges_notify_edge(ir_node *src, int pos, ir_node *tgt, ir_node *old_tgt, ir_graph *irg); + +/** + * Walks only over Block nodes in the graph. Uses the block visited + * flag, so that it can be interleaved with another walker. + * + * @param block the start block + * @param pre the pre visit function + * @param post the post visit function + * @param env the environment for the walker + */ +void irg_block_edges_walk(ir_node *block, irg_walk_func *pre, irg_walk_func *post, void *env); void edges_reset_private_data(ir_graph *irg, int offset, size_t size);