X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=ir%2Fbe%2Fbeutil.h;h=72a81fa054fb06bf4ad9037c85594d0a5498d52d;hb=5d6cfd12693c34b702aab148038ebb562f2695f9;hp=b5e393f55419093590a2a4af5cd282cd526e6d6f;hpb=0dad8bfcc985ba41f200b5db21d8f1546ae901c2;p=libfirm diff --git a/ir/be/beutil.h b/ir/be/beutil.h index b5e393f55..72a81fa05 100644 --- a/ir/be/beutil.h +++ b/ir/be/beutil.h @@ -31,7 +31,7 @@ #include "firm_types.h" #include "pset.h" -#include "bearch_t.h" +#include "bearch.h" #ifdef _MSC_VER typedef __int64 long64; @@ -58,9 +58,6 @@ typedef unsigned long long ulong64; */ pset *be_empty_set(void); -/** Undefine this to disable debugging mode. */ -#define BE_DEBUG 1 - /** * Convenient block getter. * Works also, if the given node is a block. @@ -68,21 +65,16 @@ pset *be_empty_set(void); * @return The block of the node, or the node itself, if the node is a * block. */ -static INLINE ir_node *get_block(ir_node *irn) +static inline ir_node *get_block(ir_node *irn) { return is_Block(irn) ? irn : get_nodes_block(irn); } -static INLINE const ir_node *get_block_const(const ir_node *irn) +static inline const ir_node *get_block_const(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. @@ -91,18 +83,18 @@ static INLINE int is_firm_be_mode(const ir_mode *mode) * @param irn The node to check for. * @return 1, if the node is a data node, 0 if not. */ -static INLINE int is_data_node(const ir_node *irn) +static inline int is_data_node(const ir_node *irn) { int i, n; /* If the node produces a data value, return immediately. */ - if (is_firm_be_mode(get_irn_mode(irn))) + if (mode_is_data(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 (is_firm_be_mode(get_irn_mode(op))) + if (mode_is_data(get_irn_mode(op))) return 1; } @@ -150,6 +142,13 @@ unsigned get_num_reachable_nodes(ir_graph *irg); */ ir_node *be_get_Proj_for_pn(const ir_node *irn, long pn); +/** + * Returns an array (an ARR_F) of the programs blocks in reverse postorder + * (note: caller has to free the memory with DEL_ARR_F after use; + * of course you can use ARR_LEN on the array too.) + */ +ir_node **be_get_cfgpostorder(ir_graph *irg); + /** * Opens a file named base.ext with the mode mode. */