X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Firextbb.h;h=e3466177a9f04ef12552323693c8ec6d57645e9f;hb=d217f68a9e53ec6e800ae31ca3af8ed8b6f9ece9;hp=78aa35c1adfc4a15d101ab1ef1080380a9c62226;hpb=1ce363f80e6a204d4011f85813362d9bd1d0e7e4;p=libfirm diff --git a/include/libfirm/irextbb.h b/include/libfirm/irextbb.h index 78aa35c1a..e3466177a 100644 --- a/include/libfirm/irextbb.h +++ b/include/libfirm/irextbb.h @@ -22,20 +22,13 @@ * @brief Extended basis block support. * @author Michael Beck * @date 5.2005 - * @version $Id$ */ #ifndef FIRM_ANA_IREXTBB_H #define FIRM_ANA_IREXTBB_H #include "firm_types.h" #include "execfreq.h" - -/** Flags for extended basic block state. */ -typedef enum { - ir_extblk_info_none = 0, /**< No extended basic block information is constructed. Default. */ - ir_extblk_info_valid = 1, /**< Extended basic block information is valid. */ - ir_extblk_info_invalid = 2 /**< Extended basic block information is constructed but invalid. */ -} irg_extblk_info_state; +#include "begin.h" /* type of callback function for ir_graph walk */ #ifndef _EXTBB_WALK_FUNC_TYPEDEF_ @@ -53,43 +46,44 @@ typedef void extbb_walk_func(ir_extblk *blk, void *env); * Checks whether a pointer points to a extended basic block. * Intern version for libFirm. */ -int is_ir_extbb(const void *thing); +FIRM_API int is_ir_extbb(const void *thing); /** * Compute the extended basic blocks for a graph. */ -void compute_extbb(ir_graph *irg); +FIRM_API void compute_extbb(ir_graph *irg); /** * Compute the extended basic blocks for a graph based on execution frequencies. */ -void compute_extbb_execfreqs(ir_graph *irg, ir_exec_freq *execfreqs); +FIRM_API void compute_extbb_execfreqs(ir_graph *irg, ir_exec_freq *execfreqs); /** * free all extended block info. */ -void free_extbb(ir_graph *irg); +FIRM_API void free_extbb(ir_graph *irg); /** - * Return the extended block of a node. + * Returns the extended block of a node. * * @param node the node */ -ir_extblk *get_nodes_extbb(ir_node *node); +FIRM_API ir_extblk *get_nodes_extbb(const ir_node *node); /** - * Gets the visited counter of an extended block. + * Returns the visited counter of an extended block. * * @param blk the extended basic block */ -unsigned long get_extbb_visited(const ir_extblk *blk); +FIRM_API ir_visited_t get_extbb_visited(const ir_extblk *blk); /** * Sets the visited counter of an extended block. * - * @param blk the extended basic block + * @param blk the extended basic block + * @param visited new value for the visited counter */ -void set_extbb_visited(ir_extblk *blk, unsigned long visited); +FIRM_API void set_extbb_visited(ir_extblk *blk, ir_visited_t visited); /** * Mark an extended block as visited in a graph. @@ -97,7 +91,7 @@ void set_extbb_visited(ir_extblk *blk, unsigned long visited); * * @param blk the extended basic block */ -void mark_extbb_visited(ir_extblk *blk); +FIRM_API void mark_extbb_visited(ir_extblk *blk); /** * Returns non-zero if an extended was visited. @@ -105,7 +99,7 @@ void mark_extbb_visited(ir_extblk *blk); * * @param blk the extended basic block */ -int extbb_visited(const ir_extblk *blk); +FIRM_API int extbb_visited(const ir_extblk *blk); /** * Returns non-zero if an extended block was NOT visited. @@ -113,14 +107,14 @@ int extbb_visited(const ir_extblk *blk); * * @param blk the extended basic block */ -int extbb_not_visited(const ir_extblk *blk); +FIRM_API int extbb_not_visited(const ir_extblk *blk); /** * Returns the link field of an extended block. * * @param blk the extended basic block */ -void *get_extbb_link(const ir_extblk *blk); +FIRM_API void *get_extbb_link(const ir_extblk *blk); /** * Sets the link field of an extended block. @@ -128,52 +122,55 @@ void *get_extbb_link(const ir_extblk *blk); * @param blk the extended basic block * @param link the new link value */ -void set_extbb_link(ir_extblk *blk, void *link); +FIRM_API void set_extbb_link(ir_extblk *blk, void *link); /** - * Return the number of basic blocks of an extended block. + * Returns the number of basic blocks of an extended block. * * @param blk the extended basic block */ -int get_extbb_n_blocks(const ir_extblk *blk); +FIRM_API int get_extbb_n_blocks(const ir_extblk *blk); /** - * Return the i'th basic block of an extended block. + * Returns the i'th basic block of an extended block. * * @param blk the extended basic block * @param pos the position */ -ir_node *get_extbb_block(ir_extblk *blk, int pos); +FIRM_API ir_node *get_extbb_block(const ir_extblk *blk, int pos); /** - * Return the leader basic block of an extended block. + * Returns the leader basic block of an extended block. * * @param blk the extended basic block */ -ir_node *get_extbb_leader(ir_extblk *blk); +FIRM_API ir_node *get_extbb_leader(const ir_extblk *blk); /** - * Return the node number of an extended block. + * Returns the node number of an extended block. * Its the block number of the leader block * * @param blk the extended basic block */ -long get_extbb_node_nr(ir_extblk *blk); +FIRM_API long get_extbb_node_nr(const ir_extblk *blk); /** * Walks only over Extended Basic Block nodes in the graph. * * @param blk - the start extended block node - * @param pre - walker function, executed before the predecessor of a node are visited - * @param post - walker function, executed after the predecessor of a node are visited + * @param pre - walker function, executed before the predecessor of a node are + * visited + * @param post - walker function, executed after the predecessor of a node are + * visited * @param env - environment, passed to pre and post * - * This function Walks only over Block nodes in the graph. Has it's own visited + * This function Walks only over Block nodes in the graph. Has its own visited * flag, so that it can be interleaved with the other walker. * If a none block is passed, starts at the block this node belongs to. * If end is passed also visits kept alive blocks. Does not use the link field. */ -void irg_extblock_walk(ir_extblk *blk, extbb_walk_func *pre, extbb_walk_func *post, void *env); +FIRM_API void irg_extblock_walk(ir_extblk *blk, extbb_walk_func *pre, + extbb_walk_func *post, void *env); /** * Walks only over reachable Extended Basic Block nodes in the graph. @@ -181,10 +178,15 @@ void irg_extblock_walk(ir_extblk *blk, extbb_walk_func *pre, extbb_walk_func *po * and the block containing Start visited first (in post order). * * @param irg - the irg graph - * @param pre - walker function, executed before the predecessor of a block are visited - * @param post - walker function, executed after the predecessor of a block are visited + * @param pre - walker function, executed before the predecessor of a block + * are visited + * @param post - walker function, executed after the predecessor of a block + * are visited * @param env - environment, passed to pre and post */ -void irg_extblock_walk_graph(ir_graph *irg, extbb_walk_func *pre, extbb_walk_func *post, void *env); +FIRM_API void irg_extblock_walk_graph(ir_graph *irg, extbb_walk_func *pre, + extbb_walk_func *post, void *env); + +#include "end.h" #endif