From b8b0d9963e772986d5ec97eb757ead6a91d8cb1d Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Thu, 8 Sep 2005 14:19:28 +0000 Subject: [PATCH] get_extbb_leader() and get_extbb_node_nr() added [r6603] --- ir/ana/irextbb.c | 10 ++++++++++ ir/ana/irextbb.h | 14 ++++++++++++-- ir/ana/irextbb_t.h | 11 +++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/ir/ana/irextbb.c b/ir/ana/irextbb.c index d06c3debb..c22aba1a1 100644 --- a/ir/ana/irextbb.c +++ b/ir/ana/irextbb.c @@ -226,3 +226,13 @@ int (get_extbb_n_blocks)(const ir_extblk *blk) { ir_node *(get_extbb_block)(ir_extblk *blk, int pos) { return _get_extbb_block(blk, pos); } + +/* Return the leader basis block of an extended block. */ +ir_node *(get_extbb_leader)(ir_extblk *blk) { + return _get_extbb_leader(blk); +} + +/* Return the node number of an extended block. */ +long get_extbb_node_nr(ir_extblk *blk) { + return get_irn_node_nr(get_extbb_leader(blk)); +} diff --git a/ir/ana/irextbb.h b/ir/ana/irextbb.h index 4327e84a9..d64b5c215 100644 --- a/ir/ana/irextbb.h +++ b/ir/ana/irextbb.h @@ -85,14 +85,24 @@ void *get_extbb_link(const ir_extblk *blk); void set_extbb_link(ir_extblk *blk, void *link); /** - * Return the number of basic blocks of an extended block + * Return the number of basic blocks of an extended block. */ int get_extbb_n_blocks(const ir_extblk *blk); /** - * Return the i'th basic block of an extended block + * Return the i'th basic block of an extended block. */ ir_node *get_extbb_block(ir_extblk *blk, int pos); +/** + * Return the leader basis block of an extended block. + */ +ir_node *get_extbb_leader(ir_extblk *blk); + +/** + * Return the node number of an extended block. + * Its the block number of the leader block + */ +long get_extbb_node_nr(ir_extblk *blk); #endif /* _IREXTBB_H_ */ diff --git a/ir/ana/irextbb_t.h b/ir/ana/irextbb_t.h index 15778620c..926ed8530 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. @@ -124,6 +125,15 @@ _get_extbb_block(ir_extblk *blk, int pos) return blk->blks[pos]; } +/** + * Return the leader basis block of an extended block + */ +static INLINE ir_node * +_get_extbb_leader(ir_extblk *blk) +{ + return blk->blks[0]; +} + #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) @@ -132,5 +142,6 @@ _get_extbb_block(ir_extblk *blk, int pos) #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_ */ -- 2.20.1