* @date 12.5.2006
* @author Michael Beck
* @version $Id$
- * @summary
+ * @brief
* Implementation of the Operator Strength Reduction algorithm
* by Keith D. Cooper, L. Taylor Simpson, Christopher A. Vick.
* Extended version.
node_entry *e = get_irn_link(irn);
if (e == NULL) {
- e = obstack_alloc(&env->obst, sizeof(*e));
- memset(e, 0, sizeof(*e));
+ e = OALLOCZ(&env->obst, node_entry);
set_irn_link(irn, e);
}
return e;
exchange(irn, result);
e = get_irn_ne(result, env);
if (e->pscc == NULL) {
- e->pscc = obstack_alloc(&env->obst, sizeof(*e->pscc));
- memset(e->pscc, 0, sizeof(*e->pscc));
+ e->pscc = OALLOCZ(&env->obst, scc);
update_scc(result, e, env);
}
++env->replaced;
node->low = MIN(o->DFSnum, node->low);
}
if (node->low == node->DFSnum) {
- scc *pscc = obstack_alloc(&env->obst, sizeof(*pscc));
+ scc *pscc = OALLOCZ(&env->obst, scc);
ir_node *x;
- memset(pscc, 0, sizeof(*pscc));
do {
node_entry *e;
int edges;
int projs_moved;
- if (! get_opt_strength_red()) {
- /* only kill Phi cycles */
- remove_phi_cycles(irg);
- return;
- }
-
rem = current_ir_graph;
current_ir_graph = irg;
ir_graph_pass_t *opt_osr_pass(const char *name, unsigned flags)
{
- struct pass_t *pass = xmalloc(sizeof(*pass));
-
- pass->pass.kind = k_ir_prog_pass;
- pass->pass.run_on_irg = pass_wrapper;
- pass->pass.context = pass;
- pass->pass.name = name ? name : "osr";
+ struct pass_t *pass = XMALLOCZ(struct pass_t);
pass->flags = flags;
-
- INIT_LIST_HEAD(&pass->pass.list);
-
- return &pass->pass;
+ return def_graph_pass_constructor(
+ &pass->pass, name ? name : "osr", pass_wrapper);
} /* opt_osr_pass */