X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fifconv.c;h=db6a992fbbe5d7d74f411210126f574460184c00;hb=1852308bd33b77378f0fca9e5347d4f9082464c4;hp=0108005a6d92b8dab92b964b4fdb5526a677f0ee;hpb=e1397b01aceb38b6bb62c319007146af3b922f39;p=libfirm diff --git a/ir/opt/ifconv.c b/ir/opt/ifconv.c index 0108005a6..db6a992fb 100644 --- a/ir/opt/ifconv.c +++ b/ir/opt/ifconv.c @@ -37,6 +37,7 @@ #include "irgwalk.h" #include "irtools.h" #include "array_t.h" +#include "irpass_t.h" // debug #include "irdump.h" @@ -498,3 +499,27 @@ void opt_if_conv(ir_graph *irg, const ir_settings_if_conv_t *params) free_cdep(irg); } + +struct pass_t { + ir_graph_pass_t pass; + const ir_settings_if_conv_t *params; +}; + +/** + * Wrapper for running opt_if_conv() as an ir_graph pass. + */ +static int pass_wrapper(ir_graph *irg, void *context) { + struct pass_t *pass = context; + opt_if_conv(irg, pass->params); + return 0; +} /* pass_wrapper */ + +ir_graph_pass_t *opt_if_conv_pass( + const char *name, const ir_settings_if_conv_t *params) +{ + struct pass_t *pass = XMALLOCZ(struct pass_t); + pass->params = params; + + return def_graph_pass_constructor( + &pass->pass, name ? name : "ifconv", pass_wrapper); +}