+struct pass_t {
+ ir_graph_pass_t pass;
+ unsigned flags;
+};
+
+/**
+ * Wrapper to irg_verify to be run as an ir_graph pass.
+ */
+static int irg_verify_wrapper(ir_graph *irg, void *context)
+{
+ struct pass_t *pass = context;
+ irg_verify(irg, pass->flags);
+ /* do NOT rerun the pass if verify is ok :-) */
+ return 0;
+}
+
+/* Creates an ir_graph pass for irg_verify(). */
+ir_graph_pass_t *irg_verify_pass(const char *name, unsigned flags)
+{
+ struct pass_t *pass = XMALLOCZ(struct pass_t);
+
+ def_graph_pass_constructor(
+ &pass->pass, name ? name : "irg_verify", irg_verify_wrapper);
+
+ /* neither dump for verify */
+ pass->pass.dump_irg = (DUMP_ON_IRG_FUNC)ir_prog_no_dump;
+ pass->pass.verify_irg = (RUN_ON_IRG_FUNC)ir_prog_no_verify;
+
+ pass->flags = flags;
+ return &pass->pass;
+}
+
+/* create a verify pass */
+int irn_vrfy_irg_dump(ir_node *n, ir_graph *irg, const char **bad_string)
+{