X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbesched.h;h=bd7c093200c014dd0b137e4f1a01f96f4e7369fd;hb=b42d141b27222454d6176f233327c594d71be554;hp=439c45e24f13784d4665de045ee850b5568e6a21;hpb=ea75e9d38674b468f602a0699fb64b9c01254797;p=libfirm diff --git a/ir/be/besched.h b/ir/be/besched.h index 439c45e24..bd7c09320 100644 --- a/ir/be/besched.h +++ b/ir/be/besched.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2010 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -27,6 +27,7 @@ #define FIRM_BE_BESCHED_H #include +#include #include "irgraph.h" #include "irnode.h" @@ -41,7 +42,6 @@ void be_sched_dump(FILE *f, ir_graph *irg); * 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); @@ -94,21 +94,11 @@ void sched_remove(ir_node *irn); * Removes dead nodes from schedule * @param irg the graph */ -void be_remove_dead_nodes_from_schedule(be_irg_t *birg); +void be_remove_dead_nodes_from_schedule(ir_graph *irg); #define SCHED_INITIAL_GRANULARITY (1 << 14) #define get_irn_sched_info(irn) (&be_get_info(skip_Proj_const(irn))->sched_info) -/** - * Returns non-zero if schedule information is available - * for a given graph. - * @param irg The graph. - */ -static inline int _have_sched_info(const ir_graph *irg) -{ - return be_info_initialized(irg); -} - /** * Check, if the node is scheduled. * @param irn The node. @@ -136,16 +126,25 @@ static inline int _sched_get_time_step(const ir_node *irn) * @param irn The node to check for. * @return 1, if the node consumes/produces data, false if not. */ -static inline int to_appear_in_schedule(const ir_node *irn) +static inline bool to_appear_in_schedule(const ir_node *irn) { switch(get_irn_opcode(irn)) { - case iro_Jmp: - case iro_Break: - return 1; - case iro_Proj: - return 0; - default: - return is_data_node(irn); + case iro_Anchor: + case iro_Bad: + case iro_Block: + case iro_Confirm: + case iro_Dummy: + case iro_End: + case iro_NoMem: + case iro_Pin: + case iro_Proj: + case iro_Sync: + case iro_Unknown: + return false; + case iro_Phi: + return mode_is_data(get_irn_mode(irn)); + default: + return ! (arch_irn_get_flags(irn) & arch_irn_flags_not_scheduled); } } @@ -169,7 +168,7 @@ static inline int _sched_has_next(const ir_node *irn) static inline int _sched_has_prev(const ir_node *irn) { const sched_info_t *info = get_irn_sched_info(irn); - const ir_node *block = is_Block(irn) ? irn : get_nodes_block(irn); + const ir_node *block = is_Block(irn) ? irn : get_nodes_block(irn); return info->prev != block; } @@ -411,7 +410,6 @@ int sched_skip_phi_predicator(const ir_node *irn, void *data); */ ir_node *sched_skip(ir_node *from, int forward, sched_predicator_t *predicator, void *data); -#define have_sched_info(irg) _have_sched_info(irg) #define sched_get_time_step(irn) _sched_get_time_step(irn) #define sched_has_next(irn) _sched_has_next(irn) #define sched_has_prev(irn) _sched_has_prev(irn)