X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firgwalk.c;h=f72afcf8b5b864c147373be46ba23600afc05ead;hb=c25b0f5781313f72027722783ce6286978bdd757;hp=b1d37e8d9d6f9e9f01dee7ff99d755a9248b8065;hpb=e6d6d877b442783037ee95b8b4e7054031b551af;p=libfirm diff --git a/ir/ir/irgwalk.c b/ir/ir/irgwalk.c index b1d37e8d9..f72afcf8b 100644 --- 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) { - 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)