X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Firloop_t.h;h=4a64334843b0cb29b2fab641b239979440c794ed;hb=ff0e8d7fcb34481652f0bf521ba04b1eca5e2106;hp=7709745f1879e06ad3d8599f4ae3b3a50060e29d;hpb=9cf68ba5716d1436079ce042e1c1265c479f1650;p=libfirm diff --git a/ir/ana/irloop_t.h b/ir/ana/irloop_t.h index 7709745f1..4a6433484 100644 --- a/ir/ana/irloop_t.h +++ b/ir/ana/irloop_t.h @@ -19,6 +19,7 @@ #include "firm_common.h" #include "irgraph_t.h" +#include "irnode_t.h" #include "irloop.h" #ifndef _IRLOOP_T_H_ @@ -61,7 +62,7 @@ struct ir_loop { struct loop_node *link; */ #ifdef DEBUG_libfirm - int loop_nr; /**< a unique node number for each loop node to make output + long loop_nr; /**< a unique node number for each loop node to make output readable. */ void *link; /**< GL @@@ For debugging the analyses. */ #endif @@ -96,8 +97,37 @@ _get_irg_loop(ir_graph *irg) { return irg->loop; } +static INLINE ir_loop * +_get_loop_outer_loop(const ir_loop *loop) { + assert(_is_ir_loop(loop)); + return loop->outer_loop; +} + +static INLINE int +_get_loop_depth(const ir_loop *loop) { + assert(_is_ir_loop(loop)); + return loop->depth; +} + +static INLINE int +_get_loop_n_sons(const ir_loop *loop) { + assert(_is_ir_loop(loop)); + return loop->n_sons; +} + +/* Uses temporary information to get the loop */ +static INLINE ir_loop * +_get_irn_loop(const ir_node *n) { + return n->loop; +} + + #define is_ir_loop(thing) _is_ir_loop(thing) #define set_irg_loop(irg, loop) _set_irg_loop(irg, loop) #define get_irg_loop(irg) _get_irg_loop(irg) +#define get_loop_outer_loop(loop) _get_loop_outer_loop(loop) +#define get_loop_depth(loop) _get_loop_depth(loop) +#define get_loop_n_sons(loop) _get_loop_n_sons(loop) +#define get_irn_loop(n) _get_irn_loop(n) #endif /* _IRLOOP_T_H_ */