X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Firpass.h;h=d3ef42851615b3ec80d69dfb6cf5029127db8cc3;hb=74d5a9023b48f346eead323a74e28297659e34b7;hp=ea8fab639c0e9965e9d296dc3f9e3482ecf5226b;hpb=ee5ec14c5e2363ea4d9de6a03e060fddd1927870;p=libfirm diff --git a/include/libfirm/irpass.h b/include/libfirm/irpass.h index ea8fab639..d3ef42851 100644 --- a/include/libfirm/irpass.h +++ b/include/libfirm/irpass.h @@ -27,6 +27,7 @@ #define FIRM_IR_PASS_H #include "firm_types.h" +#include "begin.h" /** * Creates a new ir_graph pass manager. @@ -37,8 +38,9 @@ * * @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. @@ -46,7 +48,8 @@ ir_graph_pass_manager_t *new_graph_pass_mgr( * @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. @@ -55,14 +58,14 @@ void ir_graph_pass_mgr_add(ir_graph_pass_manager_t *mgr, ir_graph_pass_t *pass); * * @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. * * @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,8 +76,9 @@ 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. @@ -82,7 +86,8 @@ ir_prog_pass_manager_t *new_prog_pass_mgr( * @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. @@ -90,8 +95,8 @@ void ir_prog_pass_mgr_add(ir_prog_pass_manager_t *mgr, ir_prog_pass_t *pass); * @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. @@ -99,8 +104,8 @@ void ir_prog_pass_mgr_add_graph_mgr( * @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. @@ -109,14 +114,14 @@ void ir_prog_pass_mgr_add_graph_pass( * * @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. * * @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. @@ -124,7 +129,7 @@ void term_prog_pass_mgr(ir_prog_pass_manager_t *mgr); * @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 +142,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 +155,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 +169,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)); +/** + * Set 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 +193,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,7 +207,7 @@ 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)); @@ -206,7 +221,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); +/** + * 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 + */ +FIRM_API void ir_prog_pass_mgr_set_run_idx( + ir_prog_pass_manager_t *mgr, unsigned run_idx); + +#include "end.h" + #endif