#include "firm_types.h"
#include "pset.h"
-#include "bearch_t.h"
+#include "bearch.h"
#ifdef _MSC_VER
typedef __int64 long64;
*/
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.
* @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.
* @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;
}
return 0;
}
+/**
+ * Clears the link fields of all nodes of the given graph.
+ * @param irg The graph.
+ */
void be_clear_links(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.
*/