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));
+}
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_ */
#include "firm_config.h"
#include "irgraph_t.h"
#include "irextbb.h"
+#include "irtools.h"
/**
* An extended block.
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)
#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_ */