Do not mark the transformed as visited. It makes no sense at all.
[libfirm] / ir / be / bespillremat.c
index 8717a9b..7a5fb02 100644 (file)
@@ -75,8 +75,8 @@
 #include "bechordal_t.h"
 #include "bemodule.h"
 
-#include <libcore/lc_opts.h>
-#include <libcore/lc_opts_enum.h>
+#include "lc_opts.h"
+#include "lc_opts_enum.h"
 
 #define DUMP_PROBLEM       1
 #define DUMP_MPS           2
@@ -482,7 +482,7 @@ is_rematerializable(const spill_ilp_t * si, const ir_node * irn)
 
        for (n = get_irn_arity(irn)-1; n>=0 && remat; --n) {
                ir_node        *op = get_irn_n(irn, n);
-               remat &= has_reg_class(si, op) || arch_irn_get_flags(arch_env, op) & arch_irn_flags_ignore || (get_irn_op(op) == op_NoMem);
+               remat &= has_reg_class(si, op) || arch_irn_get_flags(arch_env, op) & arch_irn_flags_ignore || is_NoMem(op);
 
 //             if(!remat)
 //                     ir_fprintf(stderr, "  Argument %d (%+F) of Node %+F has wrong regclass\n", i, op, irn);
@@ -3247,6 +3247,9 @@ is_zero(double x)
        return fabs(x) < 0.00001;
 }
 
+/**
+ * node attribute hook for changing colors
+ */
 static int mark_remat_nodes_hook(FILE *F, ir_node *n, ir_node *l)
 {
        spill_ilp_t *si = get_irg_link(current_ir_graph);
@@ -3601,7 +3604,7 @@ new_r_PhiM_nokeep(ir_graph * irg, ir_node *block, int arity, ir_node **in)
        assert( get_irn_arity(block) == arity );
 
        res = new_ir_node(NULL, irg, block, op_Phi, mode_M, arity, in);
-       res->attr.phi_backedge = new_backedge_arr(irg->obst, arity);
+       res->attr.phi.u.backedge = new_backedge_arr(irg->obst, arity);
 
        return res;
 }
@@ -4422,7 +4425,6 @@ be_spill_remat(be_irg_t *birg, const arch_register_class_t *cls)
        if(opt_verify & VERIFY_DOMINANCE)
                be_check_dominance(irg);
 
-       be_assure_dom_front(birg);
        be_assure_liveness(birg);
 
        obstack_init(&obst);