X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeutil.h;h=8df13b838c79613c4672acfa864f83f38691e64e;hb=bbc1f10ec95baa41187ff10ae7b3cadd66ad5e08;hp=7420f440064092105b4abfd3a75caad8862d916e;hpb=83c9157ff224552a9b16a73fe4a16451f4963831;p=libfirm diff --git a/ir/be/beutil.h b/ir/be/beutil.h index 7420f4400..8df13b838 100644 --- a/ir/be/beutil.h +++ b/ir/be/beutil.h @@ -2,16 +2,33 @@ #ifndef _BEUTIL_H #define _BEUTIL_H +#include "firm_config.h" + #include #include "irnode.h" -#include "config.h" - #include "bearch.h" /** Undefine this to disable debugging mode. */ #define BE_DEBUG 1 +/** + * Convenient block getter. + * Works also, if the given node is a block. + * @param irn The node. + * @return The block of the node, or the node itself, if the node is a + * block. + */ +static INLINE const ir_node *get_block(const ir_node *irn) +{ + return is_Block(irn) ? irn : get_nodes_block(irn); +} + +static INLINE int is_firm_be_mode(const ir_mode *mode) +{ + return mode_is_data(mode); +} + /** * Check, if a node produces or consumes a data value. * If it does, it is significant for scheduling and register allocation. @@ -25,13 +42,13 @@ static INLINE int is_data_node(const ir_node *irn) int i, n; /* If the node produces a data value, return immediately. */ - if(mode_is_datab(get_irn_mode(irn))) + if(is_firm_be_mode(get_irn_mode(irn))) return 1; /* else check, if it takes a data value, if that is so, return */ for(i = 0, n = get_irn_arity(irn); i < n; ++i) { ir_node *op = get_irn_n(irn, i); - if(mode_is_datab(get_irn_mode(op))) + if(is_firm_be_mode(get_irn_mode(op))) return 1; } @@ -55,7 +72,7 @@ void localize_consts(ir_graph *irg); */ void dump_allocated_irg(arch_env_t *env, ir_graph *irg, char *suffix); - +void be_clear_links(ir_graph *irg); static INLINE FILE *ffopen(const char *base, const char *ext, const char *mode) { FILE *out; @@ -69,4 +86,11 @@ static INLINE FILE *ffopen(const char *base, const char *ext, const char *mode) return out; } +/** + * Dump a graph with schedule edges. + * @param irg The graph. + * @param suffix A suffix to its file name. + */ +void dump_ir_block_graph_sched(ir_graph *irg, const char *suffix); + #endif