projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
BugFix r19562: get_nodes_block(skip_Proj(get_irn_n(n,i))) is subtile
[libfirm]
/
ir
/
ir
/
irgwalk.c
diff --git
a/ir/ir/irgwalk.c
b/ir/ir/irgwalk.c
index
b1d37e8
..
f72afcf
100644
(file)
--- a/
ir/ir/irgwalk.c
+++ b/
ir/ir/irgwalk.c
@@
-565,15
+565,12
@@
void cg_walk(irg_walk_func *pre, irg_walk_func *post, void *env) {
/* Walks back from n until it finds a real cf op. */
static ir_node *get_cf_op(ir_node *n) {
/* Walks back from n until it finds a real cf op. */
static ir_node *get_cf_op(ir_node *n) {
- ir_node *pred;
-
- n = skip_Id(n);
- n = skip_Tuple(n);
- pred = skip_Proj(n);
- if (!(is_cfop(pred) || is_fragile_op(pred) || is_Bad(pred)))
- n = get_cf_op(n);
-
- return skip_Proj(n);
+ while (!is_cfop(n) && !is_fragile_op(n) && !is_Bad(n)) {
+ n = skip_Id(n);
+ n = skip_Tuple(n);
+ n = skip_Proj(n);
+ }
+ return n;
}
static void irg_block_walk_2(ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env)
}
static void irg_block_walk_2(ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env)