From: Michael Beck Date: Tue, 7 Aug 2007 11:17:14 +0000 (+0000) Subject: ensure that the tail call is in the same block as the return (fixes fehler62) X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=42b0a2a592834883a167183acc63d813c29d96a6;p=libfirm ensure that the tail call is in the same block as the return (fixes fehler62) [r15487] --- diff --git a/ir/opt/tailrec.c b/ir/opt/tailrec.c index ea75333b5..7db1feaae 100644 --- a/ir/opt/tailrec.c +++ b/ir/opt/tailrec.c @@ -328,13 +328,14 @@ int opt_tail_rec_irg(ir_graph *irg) { if (! is_Call(call)) continue; + /* the call must be in the same block as the return */ + if (get_nodes_block(call) != get_nodes_block(ret)) + continue; + /* check if it's a recursive call */ call_ptr = get_Call_ptr(call); - if (get_irn_op(call_ptr) != op_SymConst) - continue; - - if (get_SymConst_kind(call_ptr) != symconst_addr_ent) + if (! is_SymConst(call_ptr) || get_SymConst_kind(call_ptr) != symconst_addr_ent) continue; ent = get_SymConst_entity(call_ptr);