X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbessadestr.c;h=9301e5c612f3a3ad8653b9eda01ca61beae9156d;hb=96c1929dd251e8015057b615f855cc29d6daadcb;hp=aad06dd3d3995992aeaf480662145425a12be392;hpb=b1270e2d325258dc9a97c141c0e4b6480b5feb80;p=libfirm diff --git a/ir/be/bessadestr.c b/ir/be/bessadestr.c index aad06dd3d..9301e5c61 100644 --- a/ir/be/bessadestr.c +++ b/ir/be/bessadestr.c @@ -28,6 +28,8 @@ #include "belive_t.h" #include "benode_t.h" #include "besched_t.h" +#include "benodesets.h" +#include "bestatevent.h" DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL;) @@ -35,7 +37,7 @@ DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL;) #define get_reg(irn) arch_get_irn_register(get_chordal_arch(chordal_env), irn) #define set_reg(irn, reg) arch_set_irn_register(get_chordal_arch(chordal_env), irn, reg) -#define is_Perm(irn) (arch_irn_classify(arch_env, irn) == arch_irn_class_perm) +#define is_Perm(irn) (arch_irn_class_is(arch_env, irn, perm)) #define get_reg_cls(irn) (arch_get_irn_reg_class(arch_env, irn, -1)) #define is_curr_reg_class(irn) (get_reg_cls(p) == chordal_env->cls) @@ -109,7 +111,7 @@ static void insert_all_perms_walker(ir_node *bl, void *data) { 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 = HASH_PTR(arg); + unsigned hash = nodeset_hash(arg); templ.arg = arg; pp = set_find(arg_set, &templ, sizeof(templ), hash); @@ -138,6 +140,8 @@ static void insert_all_perms_walker(ir_node *bl, void *data) { in[pp->pos] = pp->arg; perm = be_new_Perm(chordal_env->cls, irg, pred_bl, n_projs, in); + be_stat_ev("phi_perm", 1); + free(in); 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); @@ -165,7 +169,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), HASH_PTR(templ.arg)); + pp = set_find(arg_set, &templ, sizeof(templ), nodeset_hash(templ.arg)); /* If not found, it was an interfering argument */ if (pp)