/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2009 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
* @file
* @brief Manager for transformation passes.
* @author Michael Beck
- * @version $Id: $
+ * @version $Id$
*/
#ifndef FIRM_IR_PASS_H
#define FIRM_IR_PASS_H
*/
void term_prog_pass_mgr(ir_prog_pass_manager_t *mgr);
+/**
+ * Set the run index for an irgraph pass manager.
+ *
+ * @param mgr the manager
+ * @param run_idx the index for the first pass of this manager
+ */
+void ir_graph_pass_mgr_set_run_idx(
+ ir_graph_pass_manager_t *mgr, unsigned run_idx);
+
/**
* Creates an ir_graph pass for running void function(ir_graph *irg).
* Uses the default verifier and dumper.
ir_prog_pass_t *def_prog_pass(
const char *name, void (*function)(void));
+/**
+ * Creates an ir_prog pass for running void function().
+ * Uses the default verifier and dumper.
+ * The pass returns always 0.
+ *
+ * @param memory if non-NULL, an already allocated ir_prog_pass_t
+ * @param name the name of this pass
+ * @param function the function to run
+ *
+ * @return the newly created ir_prog pass
+ */
+ir_prog_pass_t *def_prog_pass_constructor(
+ ir_prog_pass_t *memory,
+ const char *name, int (*function)(ir_prog *irp, void *context));
+
+/**
+ * Create a pass that calls some function.
+ * This pass calls the given function, but has no dump nor verify.
+ *
+ * @param name the name of this pass
+ * @param function the function to run
+ * @param context context parameter
+ *
+ * @return the newly created ir_prog pass
+ */
+ir_prog_pass_t *call_function_pass(
+ const char *name, void (*function)(void *context), void *context);
+
+/**
+ * Set the run index for an irprog pass manager.
+ *
+ * @param mgr the manager
+ * @param run_idx the index for the first pass of this manager
+ */
+void ir_prog_pass_mgr_set_run_idx(
+ ir_prog_pass_manager_t *mgr, unsigned run_idx);
+
#endif