X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbesched.h;h=398232f8f68e49361219ab4bb5f25cc2086e75df;hb=288b414e4d82e0aa0d4b4348d8c387db02142cdb;hp=29d4b38024fa1352ca89990d7ed39bf4f6909dab;hpb=6d188d8d221878f81009f23c45c7f1df71475593;p=libfirm diff --git a/ir/be/besched.h b/ir/be/besched.h index 29d4b3802..398232f8f 100644 --- a/ir/be/besched.h +++ b/ir/be/besched.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -34,6 +34,12 @@ void be_sched_dump(FILE *f, ir_graph *irg); +/** + * returns the time step of a node. Each node in a block has a timestep + * unique to that block. a node schedule before another node has a lower + * timestep than this node. + */ +int have_sched_info(const ir_graph *irg); int sched_get_time_step(const ir_node *irn); int sched_has_next(const ir_node *irn); int sched_has_prev(const ir_node *irn); @@ -42,13 +48,13 @@ ir_node *sched_next(const ir_node *irn); ir_node *sched_prev(const ir_node *irn); ir_node *sched_first(const ir_node *block); ir_node *sched_last(const ir_node *block); -ir_node *sched_add_before(ir_node *before, ir_node *irn); -ir_node *sched_add_after(ir_node *before, ir_node *irn); +void sched_add_before(ir_node *before, ir_node *irn); +void sched_add_after(ir_node *after, ir_node *irn); void sched_init_block(ir_node *block); void sched_reset(ir_node *node); void sched_remove(ir_node *irn); -#define sched_is_end(irn) is_Block(irn) +#define sched_is_end(irn) is_Block(irn) #define sched_is_begin(irn) is_Block(irn) #define sched_foreach_from(from, irn) \ @@ -73,10 +79,18 @@ void sched_remove(ir_node *irn); #define sched_foreach_reverse(block,irn) \ sched_foreach_reverse_from(sched_last(block), irn) +/** + * A shorthand macro for iterating over all Phi nodes of a schedule. + * @param block The block. + * @param phi A ir node pointer used as an iterator. + */ +#define sched_foreach_Phi(block,phi) \ + for (phi = sched_first(block); is_Phi(phi); phi = sched_next(phi)) + /** * Removes dead nodes from schedule * @param irg the graph */ void be_remove_dead_nodes_from_schedule(be_irg_t *birg); -#endif /* FIRM_BE_BESCHED_H */ +#endif