From: Christoph Mallon Date: Fri, 19 Oct 2007 17:57:27 +0000 (+0000) Subject: Fix fehler99: always skip at least one node and check for (Copy)Keeps when looking... X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=af0b60cf42e54a163d0b83dbab2874ea020bdc0d;p=libfirm Fix fehler99: always skip at least one node and check for (Copy)Keeps when looking for the insertion point of a CopyKeep. Also do not check for Projs, they are not scheduled anymore. [r16283] --- diff --git a/ir/be/belower.c b/ir/be/belower.c index cf8c695f9..f2dd1d49e 100644 --- a/ir/be/belower.c +++ b/ir/be/belower.c @@ -754,20 +754,15 @@ static void melt_copykeeps(constraint_env_t *cenv) { new_ck = be_new_CopyKeep(entry->cls, irg, get_nodes_block(ref), be_get_CopyKeep_op(ref), n_melt, new_ck_in, get_irn_mode(ref)); #endif /* KEEP_ALIVE_COPYKEEP_HACK */ - /* set register class for all keeped inputs */ + /* set register class for all kept inputs */ for (j = 1; j <= n_melt; ++j) be_node_set_reg_class(new_ck, j, entry->cls); ir_nodeset_insert(&entry->copies, new_ck); /* find scheduling point */ - if (get_irn_mode(ref_mode_T) == mode_T) { - /* walk along the Projs */ - for (sched_pt = sched_next(ref_mode_T); is_Proj(sched_pt) || be_is_Keep(sched_pt) || be_is_CopyKeep(sched_pt); sched_pt = sched_next(sched_pt)) - /* just walk along the schedule until a non-Proj/Keep/CopyKeep node is found*/ ; - } - else { - sched_pt = ref_mode_T; + for (sched_pt = sched_next(ref_mode_T); be_is_Keep(sched_pt) || be_is_CopyKeep(sched_pt); sched_pt = sched_next(sched_pt)) { + /* just walk along the schedule until a non-Keep/CopyKeep node is found */ } sched_add_before(sched_pt, new_ck);