#include "bechordal_t.h"
#include "besched_t.h"
#include "bestat.h"
+#include "benodesets.h"
#include "irgmod.h"
#include "iredges_t.h"
/* reroute the edges from the proj to the argument */
edges_reroute(pairs[i].out_node, pairs[i].in_node, env->chord_env->irg);
+ set_irn_n(pairs[i].out_node, 0, new_Bad());
pairs[i].checked = 1;
}
}
/* remove the perm from schedule */
- if (! keep_perm)
+ if (! keep_perm) {
+ int arity = get_irn_arity(irn);
+ for(i = 0; i < arity; ++i) {
+ set_irn_n(irn, i, new_Bad());
+ }
sched_remove(irn);
+ }
}
/* insert the other different and it's copies into the set */
key.op = other_different;
key.copies = NULL;
- entry = pset_find(op_set, &key, HASH_PTR(other_different));
+ entry = pset_find(op_set, &key, nodeset_hash(other_different));
if (! entry) {
entry = obstack_alloc(&env->obst, sizeof(*entry));
if (be_is_CopyKeep(keep))
pset_insert_ptr(entry->copies, keep);
- pset_insert(op_set, entry, HASH_PTR(other_different));
+ pset_insert(op_set, entry, nodeset_hash(other_different));
DBG((mod, LEVEL_1, "created %+F for %+F to assure should_be_different\n", keep, irn));
}
keep = be_new_Keep(arch_get_irn_reg_class(birg->main_env->arch_env, cp, -1),
birg->irg, get_nodes_block(cp), n, (ir_node **)&get_irn_in(cp)[1]);
sched_add_before(cp, keep);
- sched_remove(cp);
/* Set all ins (including the block) of the CopyKeep BAD to keep the verifier happy. */
while (--n >= -1)
- set_irn_n(cp, n, get_irg_bad(birg->irg));
+ set_irn_n(cp, n, new_Bad());
+ sched_remove(cp);
}
}