*/
static void wq_walker(ir_node *n, void *env)
{
- walker_t *wenv = env;
+ walker_t *wenv = (walker_t*)env;
set_irn_link(n, NULL);
if (!is_Block(n)) {
- ir_node *blk = get_nodes_block(n);
-
- if (is_Block_dead(blk) || get_Block_dom_depth(blk) < 0) {
- /* We are in a dead block, do not optimize or we may fall into an endless
- loop. We check this here instead of requiring that all dead blocks are removed
- which or cf_opt do not guarantee yet. */
- return;
- }
waitq_put(wenv->wq, n);
set_irn_link(n, wenv->wq);
}
static void do_reassociation(walker_t *wenv)
{
int i, res, changed;
- ir_node *n, *blk;
+ ir_node *n;
while (! waitq_empty(wenv->wq)) {
- n = waitq_get(wenv->wq);
+ n = (ir_node*)waitq_get(wenv->wq);
set_irn_link(n, NULL);
- blk = get_nodes_block(n);
- if (is_Block_dead(blk) || get_Block_dom_depth(blk) < 0) {
- /* We are in a dead block, do not optimize or we may fall into an endless
- loop. We check this here instead of requiring that all dead blocks are removed
- which or cf_opt do not guarantee yet. */
- continue;
- }
-
-
hook_reassociate(1);
/* reassociation must run until a fixpoint is reached. */
*/
static void reverse_rules(ir_node *node, void *env)
{
- walker_t *wenv = env;
- ir_mode *mode = get_irn_mode(node);
- ir_graph *irg = get_irn_irg(node);
+ walker_t *wenv = (walker_t*)env;
+ ir_graph *irg = get_irn_irg(node);
+ ir_mode *mode = get_irn_mode(node);
int res;
/* for FP these optimizations are only allowed if fp_strict_algebraic is disabled */
/*
* Calculate loop info, so we could identify loop-invariant
- * code and threat it like a constant.
+ * code and treat it like a constant.
* We only need control flow loops here but can handle generic
* INTRA info as well.
*/
}
set_reassoc_running(0);
- /* Handle graph state */
- if (env.changes) {
- set_irg_outs_inconsistent(irg);
- set_irg_loopinfo_inconsistent(irg);
- }
-
#ifdef NEW_REASSOC
obstack_free(&commutative_args, NULL);
#endif
} /* optimize_reassociation_pass */
/* Sets the default reassociation operation for an ir_op_ops. */
-ir_op_ops *firm_set_default_reassoc(ir_opcode code, ir_op_ops *ops)
+ir_op_ops *firm_set_default_reassoc(unsigned code, ir_op_ops *ops)
{
#define CASE(a) case iro_##a: ops->reassociate = reassoc_##a; break
CASE(Eor);
CASE(Shl);
default:
- /* leave NULL */;
+ break;
}
return ops;