X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbesched.h;h=398232f8f68e49361219ab4bb5f25cc2086e75df;hb=288b414e4d82e0aa0d4b4348d8c387db02142cdb;hp=cade289f2dcaf26d835312496169b722e06260c2;hpb=39f3a8dbd0f00f90b7b12a849d1bf7b9c1329479;p=libfirm diff --git a/ir/be/besched.h b/ir/be/besched.h index cade289f2..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. * @@ -30,9 +30,16 @@ #include "irgraph.h" #include "irnode.h" +#include "beirg.h" 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); @@ -41,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) \ @@ -72,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(ir_graph *irg); +void be_remove_dead_nodes_from_schedule(be_irg_t *birg); -#endif /* FIRM_BE_BESCHED_H */ +#endif