X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Ftailrec.c;h=15932a5a9551770c0100894dc488b3b04948af55;hb=6b124543aff56817fcfe6d5b5ff181ac5c790e73;hp=9971c566fb74dcbd4635a1be1078db94762ffb9f;hpb=e1397b01aceb38b6bb62c319007146af3b922f39;p=libfirm diff --git a/ir/opt/tailrec.c b/ir/opt/tailrec.c index 9971c566f..15932a5a9 100644 --- a/ir/opt/tailrec.c +++ b/ir/opt/tailrec.c @@ -45,6 +45,7 @@ #include "irouts.h" #include "irhooks.h" #include "ircons_t.h" +#include "irpass.h" DEBUG_ONLY(static firm_dbg_module_t *dbg); @@ -346,7 +347,6 @@ static void do_opt_tail_rec(ir_graph *irg, tr_env *env) { set_Tuple_pred(call, pn_Call_X_regular, jmp); set_Tuple_pred(call, pn_Call_X_except, bad); set_Tuple_pred(call, pn_Call_T_result, tuple); - set_Tuple_pred(call, pn_Call_M_except, mem); set_Tuple_pred(call, pn_Call_P_value_res_base, bad); for (i = 0; i < env->n_ress; ++i) { @@ -702,6 +702,11 @@ int opt_tail_rec_irg(ir_graph *irg) { return n_tail_calls; } +ir_graph_pass_t *opt_tail_rec_irg_pass(const char *name) +{ + return def_graph_pass_ret(name ? name : "tailrec", opt_tail_rec_irg); +} + /* * optimize tail recursion away */ @@ -727,3 +732,8 @@ void opt_tail_recursion(void) { DB((dbg, LEVEL_1, "Performed tail recursion for %d of %d graphs\n", n_opt_applications, get_irp_n_irgs())); } + +ir_prog_pass_t *opt_tail_recursion_pass(const char *name) +{ + return def_prog_pass(name ? name : "tailrec", opt_tail_recursion); +}