+
+struct pass_t {
+ ir_graph_pass_t pass;
+ unsigned flags;
+};
+
+/**
+* Wrapper for running opt_osr() as an ir_graph pass.
+*/
+static int pass_wrapper(ir_graph *irg, void *context) {
+ struct pass_t *pass = context;
+ opt_osr(irg, pass->flags);
+ return 0;
+} /* pass_wrapper */
+
+ir_graph_pass_t *opt_osr_pass(const char *name, int verify, int dump, 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";
+ pass->pass.verify = verify != 0;
+ pass->pass.dump = dump != 0;
+
+ pass->flags = flags;
+
+ INIT_LIST_HEAD(&pass->pass.list);
+
+ return &pass->pass;
+} /* opt_osr_pass */