* @brief Tail-recursion call optimization.
* @date 08.06.2004
* @author Michael Beck
- * @version $Id$
*/
#include "config.h"
env.variants[i] = TR_DIRECT;
}
- /*
- * This tail recursion optimization works best
- * if the Returns are normalized.
- */
- normalize_n_returns(irg);
-
ir_reserve_resources(irg, IR_RESOURCE_IRN_LINK);
end_block = get_irg_end_block(irg);
break;
}
if (var == TR_DIRECT)
- var = env.variants[j];
+ var = env.variants[j];
else if (env.variants[j] == TR_DIRECT)
env.variants[j] = var;
if (env.variants[j] != var) {
return 0;
}
+
+/*
+ * This tail recursion optimization works best
+ * if the Returns are normalized.
+ */
static optdesc_t opt_tailrec = {
"tail-recursion",
- IR_GRAPH_STATE_NO_BADS | IR_GRAPH_STATE_CONSISTENT_OUTS,
+ IR_GRAPH_STATE_MANY_RETURNS | IR_GRAPH_STATE_NO_BADS | IR_GRAPH_STATE_CONSISTENT_OUTS,
do_tailrec,
};