Do not mark the transformed as visited. It makes no sense at all.
[libfirm] / ir / be / bespill.c
index edebe35..3676e91 100644 (file)
@@ -155,7 +155,7 @@ spill_env_t *be_new_spill_env(be_irg_t *birg)
 {
        const arch_env_t *arch_env = birg->main_env->arch_env;
 
-       spill_env_t *env        = xmalloc(sizeof(env[0]));
+       spill_env_t *env = XMALLOC(spill_env_t);
        env->spills                     = new_set(cmp_spillinfo, 1024);
        env->irg            = be_get_birg_irg(birg);
        env->birg           = birg;
@@ -714,6 +714,7 @@ static ir_node *do_remat(spill_env_t *env, ir_node *spilled, ir_node *reloader)
                          get_irn_op(spilled), get_irn_mode(spilled),
                          get_irn_arity(spilled), ins);
        copy_node_attr(spilled, res);
+       arch_env_mark_remat(env->arch_env, res);
        new_backedge_info(res);
 
        DBG((dbg, LEVEL_1, "Insert remat %+F of %+F before reloader %+F\n", res, spilled, reloader));