From 8e6e30083438c8ab08bb7c8422a1fdbcbd16d51c Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Wed, 26 Sep 2007 19:48:22 +0000 Subject: [PATCH] dont push constrained nodes through perms (fixes fehler82) [r15932] --- ir/be/belower.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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)) { -- 2.20.1