From: Matthias Braun Date: Wed, 26 Sep 2007 19:48:22 +0000 (+0000) Subject: dont push constrained nodes through perms (fixes fehler82) X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=8e6e30083438c8ab08bb7c8422a1fdbcbd16d51c;p=libfirm dont push constrained nodes through perms (fixes fehler82) [r15932] --- diff --git a/ir/be/belower.c b/ir/be/belower.c index 42c887ea8..0ae32e16b 100644 --- a/ir/be/belower.c +++ b/ir/be/belower.c @@ -929,8 +929,9 @@ found_front: node = sched_prev(perm); n_moved = 0; while(!sched_is_begin(node)) { - int input = -1; - ir_node *proj; + const arch_register_req_t *req; + int input = -1; + ir_node *proj; foreach_out_edge(perm, edge) { ir_node *out = get_edge_src_irn(edge); @@ -949,6 +950,14 @@ found_front: break; if(arch_irn_is(aenv, node, modify_flags)) break; + if(is_Proj(node)) { + req = arch_get_register_req(aenv, get_Proj_pred(node), + -1 - get_Proj_proj(node)); + } else { + req = arch_get_register_req(aenv, node, -1); + } + if(req->type != arch_register_req_type_normal) + break; for(i = get_irn_arity(node) - 1; i >= 0; --i) { ir_node *opop = get_irn_n(node, i); if (arch_irn_consider_in_reg_alloc(aenv, cls, opop)) {