spill preparation needs liveness
[libfirm] / include / libfirm / irpass.h
index 5117650..5a63793 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 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.
  *
@@ -21,7 +21,7 @@
  * @file
  * @brief     Manager for transformation passes.
  * @author    Michael Beck
- * @version   $Id$
+ * @version   $Id$
  */
 #ifndef FIRM_IR_PASS_H
 #define FIRM_IR_PASS_H
@@ -93,6 +93,15 @@ void ir_prog_pass_mgr_add(ir_prog_pass_manager_t *mgr, ir_prog_pass_t *pass);
 void ir_prog_pass_mgr_add_graph_mgr(
        ir_prog_pass_manager_t *mgr, ir_graph_pass_manager_t *graph_mgr);
 
+/**
+ * Add an ir_graph_pass as a pass to an ir_prog pass manager.
+ *
+ * @param mgr   the ir_prog pass manager
+ * @param pass  the ir_graph pass to be added
+ */
+void ir_prog_pass_mgr_add_graph_pass(
+       ir_prog_pass_manager_t *mgr, ir_graph_pass_t *pass);
+
 /**
  * Run all passes of an ir_prog pass manager.
  *
@@ -109,4 +118,104 @@ int ir_prog_pass_mgr_run(ir_prog_pass_manager_t *mgr);
  */
 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.
+ * The pass returns always 0.
+ *
+ * @param name      the name of this pass
+ * @param function  the function to run
+ *
+ * @return  the newly created ir_graph pass
+ */
+ir_graph_pass_t *def_graph_pass(
+       const char *name, void (*function)(ir_graph *irg));
+
+/**
+ * Creates an ir_graph pass for running int function(ir_graph *irg).
+ * Uses the default verifier and dumper.
+ * The pass returns the return value of function.
+ *
+ * @param name      the name of this pass
+ * @param function  the function to run
+ *
+ * @return  the newly created ir_graph pass
+ */
+ir_graph_pass_t *def_graph_pass_ret(
+       const char *name, int (*function)(ir_graph *irg));
+
+/**
+ * Creates an ir_graph pass for running int function(ir_graph *irg).
+ * Uses the default verifier and dumper.
+ * The pass returns the return value of function.
+ *
+ * @param memory    if non-NULL, an already allocated ir_graph_pass_t
+ * @param name      the name of this pass
+ * @param function  the function to run
+ *
+ * @return  the newly created ir_graph pass
+ */
+ir_graph_pass_t *def_graph_pass_constructor(
+       ir_graph_pass_t *memory,
+       const char *name, int (*function)(ir_graph *irg, void *context));
+
+/**
+ * Creates an ir_prog pass for running void function().
+ * Uses the default verifier and dumper.
+ * The pass returns always 0.
+ *
+ * @param name      the name of this pass
+ * @param function  the function to run
+ *
+ * @return  the newly created ir_graph pass
+ */
+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