/**
* Wrapper for running optimize_funccalls() as an ir_prog pass.
*/
-static int pass_wrapper(ir_graph *irg, void *context) {
+static int pass_wrapper(ir_prog *irp, void *context)
+{
struct pass_t *pass = context;
+
+ (void)irp;
optimize_funccalls(pass->force_run, pass->callback);
return 0;
} /* pass_wrapper */
/* Creates an ir_prog pass for optimize_funccalls. */
ir_prog_pass_t *optimize_funccalls_pass(
- const char *name, int verify, int dump,
+ const char *name,
int force_run, check_alloc_entity_func callback)
{
- struct pass_t *pass = xmalloc(sizeof(*pass));
-
- pass->pass.kind = k_ir_prog_pass;
- pass->pass.run_on_irprog = pass_wrapper;
- pass->pass.context = pass;
- pass->pass.name = name ? name : "funccalls";
- pass->pass.verify = verify != 0;
- pass->pass.dump = dump != 0;
-
- INIT_LIST_HEAD(&pass->pass.list);
+ struct pass_t *pass = XMALLOCZ(struct pass_t);
pass->force_run = force_run;
pass->callback = callback;
- return &pass->pass;
+ return def_prog_pass_constructor(
+ &pass->pass, name ? name : "funccall", pass_wrapper);
} /* optimize_funccalls_pass */