projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
clarify some node comments
[libfirm]
/
ir
/
opt
/
tailrec.c
diff --git
a/ir/opt/tailrec.c
b/ir/opt/tailrec.c
index
dc6f159
..
a294bde
100644
(file)
--- a/
ir/opt/tailrec.c
+++ b/
ir/opt/tailrec.c
@@
-22,7
+22,6
@@
* @brief Tail-recursion call optimization.
* @date 08.06.2004
* @author Michael Beck
* @brief Tail-recursion call optimization.
* @date 08.06.2004
* @author Michael Beck
- * @version $Id$
*/
#include "config.h"
*/
#include "config.h"
@@
-594,12
+593,6
@@
static ir_graph_state_t do_tailrec(ir_graph *irg)
env.variants[i] = TR_DIRECT;
}
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);
ir_reserve_resources(irg, IR_RESOURCE_IRN_LINK);
end_block = get_irg_end_block(irg);
@@
-661,7
+654,7
@@
static ir_graph_state_t do_tailrec(ir_graph *irg)
break;
}
if (var == TR_DIRECT)
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) {
else if (env.variants[j] == TR_DIRECT)
env.variants[j] = var;
if (env.variants[j] != var) {
@@
-699,9
+692,14
@@
static ir_graph_state_t do_tailrec(ir_graph *irg)
return 0;
}
return 0;
}
+
+/*
+ * This tail recursion optimization works best
+ * if the Returns are normalized.
+ */
static optdesc_t opt_tailrec = {
"tail-recursion",
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,
};
do_tailrec,
};