X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Firextbb_t.h;h=97e44bccbbc9fef891082b7936f2153b9797a486;hb=478ce980fb8947a3570d50eb8fe1d01530041c3d;hp=15778620ce74f909e6de84d07f36fd2cca3a0bbd;hpb=a97b92c4dcc62fc145d7adf6945a13c1ae0f47ee;p=libfirm diff --git a/ir/ana/irextbb_t.h b/ir/ana/irextbb_t.h index 15778620c..97e44bccb 100644 --- a/ir/ana/irextbb_t.h +++ b/ir/ana/irextbb_t.h @@ -23,6 +23,7 @@ #include "firm_config.h" #include "irgraph_t.h" #include "irextbb.h" +#include "irtools.h" /** * An extended block. @@ -34,6 +35,14 @@ struct _ir_extblk { void *link; /**< private link field */ }; +/** + * Checks whether a pointer points to a extended basic block. + * Intern version for libFirm. + */ +static INLINE int +_is_ir_extbb (const void *thing) { + return (get_kind(thing) == k_ir_extblk); +} /** * Gets the visited counter of an extended block. @@ -62,7 +71,7 @@ _set_extbb_visited(ir_extblk *blk, unsigned long visited) { static INLINE void _mark_extbb_visited(ir_extblk *blk) { assert(blk); - blk->visited = current_ir_graph->visited; + blk->visited = current_ir_graph->block_visited; } /** @@ -72,7 +81,7 @@ _mark_extbb_visited(ir_extblk *blk) { static INLINE int _extbb_visited(const ir_extblk *blk) { assert(blk); - return blk->visited >= current_ir_graph->visited; + return blk->visited >= current_ir_graph->block_visited; } /** @@ -82,7 +91,7 @@ _extbb_visited(const ir_extblk *blk) { static INLINE int _extbb_not_visited(const ir_extblk *blk) { assert(blk); - return blk->visited < current_ir_graph->visited; + return blk->visited < current_ir_graph->block_visited; } /** @@ -124,13 +133,24 @@ _get_extbb_block(ir_extblk *blk, int pos) return blk->blks[pos]; } -#define get_extbb_visited(blk) _get_extbb_visited(blk) -#define set_extbb_visited(blk, v) _set_extbb_visited(blk, v) -#define mark_extbb_visited(blk) _mark_extbb_visited(blk) +/** + * Return the leader basis block of an extended block + */ +static INLINE ir_node * +_get_extbb_leader(ir_extblk *blk) +{ + return blk->blks[0]; +} + +#define is_ir_extbb(thing) _is_ir_extbb(thing) +#define get_extbb_visited(blk) _get_extbb_visited(blk) +#define set_extbb_visited(blk, v) _set_extbb_visited(blk, v) +#define mark_extbb_visited(blk) _mark_extbb_visited(blk) #define extbb_visited(blk) _extbb_visited(blk) #define extbb_not_visited(blk) _extbb_not_visited(blk) #define get_extbb_link(blk) _get_extbb_link(blk) #define set_extbb_link(blk, link) _set_extbb_link(blk, link) #define get_extbb_n_blocks(blk) _get_extbb_n_blocks(blk) +#define get_extbb_leader(blk) _get_extbb_leader(blk) #endif /* _IREXTBB_H_ */