X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbesched_t.h;h=8f6ddfc07907d1dde6bedca5cbd8e6a9f883267f;hb=a4c23fb5fdcaf600f18b4fa7b7e104fa9b7dc514;hp=3e874f5c771e144bfc06b6d1ab3cfdaa78c0c655;hpb=0e5f781d021c0b1e20ba08f583d4971419fedb5d;p=libfirm diff --git a/ir/be/besched_t.h b/ir/be/besched_t.h index 3e874f5c7..8f6ddfc07 100644 --- a/ir/be/besched_t.h +++ b/ir/be/besched_t.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. * @@ -58,6 +58,16 @@ typedef struct _sched_info_t { #define get_irn_sched_info(irn) ((sched_info_t *) get_or_set_irn_phase_info(skip_Proj_const(irn), PHASE_BE_SCHED)) #define get_sched_info_irn(irg, sched_info) get_idx_irn((irg), (sched_info)->idx) +/** + * 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 get_irg_phase(irg, PHASE_BE_SCHED) != NULL; +} + /** * Check, if the node is scheduled. * @param irn The node. @@ -65,7 +75,7 @@ typedef struct _sched_info_t { */ static INLINE int _sched_is_scheduled(const ir_node *irn) { - return get_irn_sched_info(irn)->scheduled; + return get_irn_sched_info(irn)->scheduled; } /** @@ -259,11 +269,7 @@ static INLINE void _sched_reset(const ir_node *node) */ static INLINE void _sched_remove(const ir_node *irn) { - sched_info_t *info; -#ifndef SCHEDULE_PROJ - assert(!is_Proj(irn)); -#endif - info = get_irn_sched_info(irn); + sched_info_t *info = get_irn_sched_info(irn); list_del(&info->list); INIT_LIST_HEAD(&info->list); info->scheduled = 0; @@ -295,7 +301,7 @@ static INLINE int _sched_comes_after(const ir_node *n1, const ir_node *n2) { assert(_sched_is_scheduled(n1)); assert(_sched_is_scheduled(n2)); - assert(get_nodes_block(n1) == get_nodes_block(n2)); + assert((is_Block(n1) ? n1 : get_nodes_block(n1)) == (is_Block(n2) ? n2 : get_nodes_block(n2))); return _sched_get_time_step(n1) < _sched_get_time_step(n2); } @@ -338,6 +344,7 @@ 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)