Let foreach_pset() declare its iterator variable.
[libfirm] / include / libfirm / irpass.h
index ea8fab6..88a08ff 100644 (file)
  * @file
  * @brief     Manager for transformation passes.
  * @author    Michael Beck
- * @version   $Id$
  */
 #ifndef FIRM_IR_PASS_H
 #define FIRM_IR_PASS_H
 
 #include "firm_types.h"
+#include "begin.h"
 
 /**
  * Creates a new ir_graph pass manager.
  *
  * @return the newly created manager
  */
-ir_graph_pass_manager_t *new_graph_pass_mgr(
-       const char *name, int verify_all, int dump_all);
+FIRM_API ir_graph_pass_manager_t *new_graph_pass_mgr(const char *name,
+                                                     int verify_all,
+                                                     int dump_all);
 
 /**
- * Add an ir_graph pass to a graph pass manager.
+ * Adds an ir_graph pass to a graph pass manager.
  *
  * @param mgr   the ir_graph pass manager
  * @param pass  the pass to add
  */
-void ir_graph_pass_mgr_add(ir_graph_pass_manager_t *mgr, ir_graph_pass_t *pass);
+FIRM_API void ir_graph_pass_mgr_add(ir_graph_pass_manager_t *mgr,
+                                    ir_graph_pass_t *pass);
 
 /**
- * Run all passes of an ir_graph pass manager.
+ * Runs all passes of an ir_graph pass manager.
  *
  * @param mgr   the manager
  *
  * @return 0 if all passes return 0, else 1
  */
-int ir_graph_pass_mgr_run(ir_graph_pass_manager_t *mgr);
+FIRM_API int ir_graph_pass_mgr_run(ir_graph_pass_manager_t *mgr);
 
 /**
- * Terminate an ir_graph pass manager and all owned passes.
+ * Terminates an ir_graph pass manager and all owned passes.
  *
  * @param mgr   the manager
  */
-void term_graph_pass_mgr(ir_graph_pass_manager_t *mgr);
+FIRM_API void term_graph_pass_mgr(ir_graph_pass_manager_t *mgr);
 
 /**
  * Creates a new ir_prog pass manager.
@@ -73,58 +75,60 @@ void term_graph_pass_mgr(ir_graph_pass_manager_t *mgr);
  *
  * @return  the newly created manager
  */
-ir_prog_pass_manager_t *new_prog_pass_mgr(
-       const char *name, int verify_all, int dump_all);
+FIRM_API ir_prog_pass_manager_t *new_prog_pass_mgr(const char *name,
+                                                   int verify_all,
+                                                   int dump_all);
 
 /**
- * Add an ir_prog pass to an ir_prog pass manager.
+ * Adds an ir_prog pass to an ir_prog pass manager.
  *
  * @param mgr   the ir_prog pass manager
  * @param pass  the pass to add
  */
-void ir_prog_pass_mgr_add(ir_prog_pass_manager_t *mgr, ir_prog_pass_t *pass);
+FIRM_API void ir_prog_pass_mgr_add(ir_prog_pass_manager_t *mgr,
+                                   ir_prog_pass_t *pass);
 
 /**
- * Add an ir_graph_pass_manager as a pass to an ir_prog pass manager.
+ * Adds an ir_graph_pass_manager as a pass to an ir_prog pass manager.
  *
  * @param mgr        the ir_prog pass manager
  * @param graph_mgr  the ir_graph pass manager to be added
  */
-void ir_prog_pass_mgr_add_graph_mgr(
-       ir_prog_pass_manager_t *mgr, ir_graph_pass_manager_t *graph_mgr);
+FIRM_API 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.
+ * Adds 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);
+FIRM_API 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.
+ * Runs all passes of an ir_prog pass manager.
  *
  * @param mgr   the manager
  *
  * @return 0 if all passes return 0, else 1
  */
-int ir_prog_pass_mgr_run(ir_prog_pass_manager_t *mgr);
+FIRM_API int ir_prog_pass_mgr_run(ir_prog_pass_manager_t *mgr);
 
 /**
- * Terminate an ir_prog pass manager and all owned passes.
+ * Terminates an ir_prog pass manager and all owned passes.
  *
  * @param mgr   the manager
  */
-void term_prog_pass_mgr(ir_prog_pass_manager_t *mgr);
+FIRM_API void term_prog_pass_mgr(ir_prog_pass_manager_t *mgr);
 
 /**
- * Set the run index for an irgraph pass manager.
+ * Sets 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(
+FIRM_API void ir_graph_pass_mgr_set_run_idx(
        ir_graph_pass_manager_t *mgr, unsigned run_idx);
 
 /**
@@ -137,7 +141,7 @@ void ir_graph_pass_mgr_set_run_idx(
  *
  * @return  the newly created ir_graph pass
  */
-ir_graph_pass_t *def_graph_pass(
+FIRM_API ir_graph_pass_t *def_graph_pass(
        const char *name, void (*function)(ir_graph *irg));
 
 /**
@@ -150,7 +154,7 @@ ir_graph_pass_t *def_graph_pass(
  *
  * @return  the newly created ir_graph pass
  */
-ir_graph_pass_t *def_graph_pass_ret(
+FIRM_API ir_graph_pass_t *def_graph_pass_ret(
        const char *name, int (*function)(ir_graph *irg));
 
 /**
@@ -164,10 +168,20 @@ ir_graph_pass_t *def_graph_pass_ret(
  *
  * @return  the newly created ir_graph pass
  */
-ir_graph_pass_t *def_graph_pass_constructor(
+FIRM_API ir_graph_pass_t *def_graph_pass_constructor(
        ir_graph_pass_t *memory,
        const char *name, int (*function)(ir_graph *irg, void *context));
 
+/**
+ * Sets the run_parallel property of a graph pass.
+ * If the flag is set to non-zero, the pass can be executed
+ * parallel on all graphs of a ir_prog.
+ *
+ * @param pass  the pass
+ * @param flag  new flag setting
+ */
+FIRM_API void ir_graph_pass_set_parallel(ir_graph_pass_t *pass, int flag);
+
 /**
  * Creates an ir_prog pass for running void function().
  * Uses the default verifier and dumper.
@@ -178,7 +192,7 @@ ir_graph_pass_t *def_graph_pass_constructor(
  *
  * @return  the newly created ir_graph pass
  */
-ir_prog_pass_t *def_prog_pass(
+FIRM_API ir_prog_pass_t *def_prog_pass(
        const char *name, void (*function)(void));
 
 /**
@@ -192,12 +206,12 @@ ir_prog_pass_t *def_prog_pass(
  *
  * @return  the newly created ir_prog pass
  */
-ir_prog_pass_t *def_prog_pass_constructor(
+FIRM_API 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.
+ * Creates 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
@@ -206,7 +220,18 @@ ir_prog_pass_t *def_prog_pass_constructor(
  *
  * @return  the newly created ir_prog pass
  */
-ir_prog_pass_t *call_function_pass(
+FIRM_API ir_prog_pass_t *call_function_pass(
        const char *name, void (*function)(void *context), void *context);
 
+/**
+ * Sets the run index for an irprog pass manager.
+ *
+ * @param mgr      the manager
+ * @param run_idx  the index for the first pass of this manager
+ */
+FIRM_API void ir_prog_pass_mgr_set_run_idx(
+       ir_prog_pass_manager_t *mgr, unsigned run_idx);
+
+#include "end.h"
+
 #endif