#include "irprintf.h"
#include "irgopt.h"
#include "irtools.h"
+#include "array_t.h"
/**
* Walker environment.
*/
typedef struct _env_t {
- unsigned num_confirms; /**< number of inserted Confirm nodes */
- unsigned num_consts; /**< number of constants placed */
- unsigned num_eq; /**< number of equalities placed */
+ unsigned num_confirms; /**< number of inserted Confirm nodes */
+ unsigned num_consts; /**< number of constants placed */
+ unsigned num_eq; /**< number of equalities placed */
} env_t;
/**
*/
static ir_node *get_effective_use_block(ir_node *node, int pos) {
if (is_Phi(node)) {
- /* the effective use of a Phi is in its predecessor block */
- node = get_irn_n(node, pos);
+ /* the effective use of a Phi argument is in its predecessor block */
+ node = get_nodes_block(node);
+ return get_Block_cfgpred_block(node, pos);
}
return get_nodes_block(node);
}
* @param env statistical environment
*/
static void handle_modeb(ir_node *block, ir_node *selector, pn_Cond pnc, env_t *env) {
- ir_node *cond, *old, *cond_block, *other_blk = NULL, *con = NULL;
+ ir_node *cond, *old, *cond_block = NULL, *other_blk = NULL, *con = NULL;
ir_node *c_b = NULL, *c_o = NULL;
const ir_edge_t *edge, *next;
* block. In that case the other_block is the user_blk itself and pred_block
* is the cond_block ...
*
- * Best would be to indroduce a block here, removing this critical edge.
+ * Best would be to introduce a block here, removing this critical edge.
* For some reasons I cannot repair dominance here, so I have to remove
* ALL critical edges...
* FIXME: This should not be needed if we could repair dominance ...
handle_modeb(block, selector, get_Proj_proj(proj), env);
/* this should be an IF, check this */
- if (get_irn_op(selector) != op_Proj)
+ if (! is_Proj(selector))
return;
cmp = get_Proj_pred(selector);
- if (get_irn_op(cmp) != op_Cmp)
+ if (! is_Cmp(cmp))
return;
pnc = get_Proj_proj(selector);
edges_deactivate(irg);
} /* construct_confirms */
+#if 0
/**
* Post-walker: Remove Confirm nodes
*/
static void rem_Confirm(ir_node *n, void *env) {
(void) env;
- if (get_irn_op(n) == op_Confirm) {
+ if (is_Confirm(n)) {
ir_node *value = get_Confirm_value(n);
if (value != n)
exchange(n, value);
}
}
} /* rem_Confirm */
+#endif
/*
* Remove all Confirm nodes from a graph.