Do not emit cld in the CopyB prologue. The ABI mandates that DF is cleared, so do...
[libfirm] / ir / be / bessadestr.c
index 6137ce4..3bcc300 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
  *
  * This file is part of libFirm.
  *
@@ -46,7 +46,6 @@
 #include "belive_t.h"
 #include "benode_t.h"
 #include "besched_t.h"
-#include "benodesets.h"
 #include "bestatevent.h"
 #include "beirg_t.h"
 #include "beintlive_t.h"
@@ -139,9 +138,9 @@ static void insert_all_perms_walker(ir_node *bl, void *data) {
                 * register class by construction.
                 */
                for(phi = get_irn_link(bl); phi; phi = get_irn_link(phi)) {
-                       perm_proj_t templ;
-                       ir_node *arg     = get_irn_n(phi, i);
-                       unsigned hash    = nodeset_hash(arg);
+                       ir_node     *arg  = get_irn_n(phi, i);
+                       unsigned     hash = hash_irn(arg);
+                       perm_proj_t  templ;
 
                        if (arch_irn_is(chordal_env->birg->main_env->arch_env, arg, ignore))
                                continue;
@@ -168,14 +167,14 @@ static void insert_all_perms_walker(ir_node *bl, void *data) {
                         * Create a new Perm with the arguments just collected
                         * above in the arg_set and insert it into the schedule.
                         */
-                       in = xmalloc(n_projs * sizeof(in[0]));
+                       in = XMALLOCN(ir_node*, n_projs);
                        for(pp = set_first(arg_set); pp; pp = set_next(arg_set))
                                in[pp->pos] = pp->arg;
 
                        perm = be_new_Perm(chordal_env->cls, irg, pred_bl, n_projs, in);
                        be_stat_ev("phi_perm", n_projs);
 
-                       insert_after = sched_skip(sched_last(pred_bl), 0, sched_skip_cf_predicator, chordal_env->birg->main_env->arch_env);
+                       insert_after = sched_skip(sched_last(pred_bl), 0, sched_skip_cf_predicator, &chordal_env->birg->main_env->arch_env);
                        sched_add_after(insert_after, perm);
 
                        /*
@@ -200,7 +199,7 @@ static void insert_all_perms_walker(ir_node *bl, void *data) {
                                perm_proj_t templ;
 
                                templ.arg = get_irn_n(phi, i);
-                               pp        = set_find(arg_set, &templ, sizeof(templ), nodeset_hash(templ.arg));
+                               pp        = set_find(arg_set, &templ, sizeof(templ), hash_irn(templ.arg));
 
                                /* If not found, it was an interfering argument */
                                if (pp) {
@@ -289,7 +288,7 @@ static void set_regs_or_place_dupls_walker(ir_node *bl, void *data) {
 
                                set_irn_n(phi, i, dupl);
                                set_reg(dupl, phi_reg);
-                               sched_add_after(sched_skip(sched_last(arg_block), 0, sched_skip_cf_predicator, chordal_env->birg->main_env->arch_env), dupl);
+                               sched_add_after(sched_skip(sched_last(arg_block), 0, sched_skip_cf_predicator, &chordal_env->birg->main_env->arch_env), dupl);
                                pin_irn(dupl, phi_block);
                                be_liveness_introduce(lv, dupl);
                                be_liveness_update(lv, arg);