ir_graph *const irg = get_irn_irg(irn);
ir_node *const block = get_nodes_block(irn);
int const arity = get_irn_arity(irn);
- reg_pair_t *const pairs = alloca(arity * sizeof(pairs[0]));
+ reg_pair_t *const pairs = ALLOCAN(reg_pair_t, arity);
int keep_perm = 0;
int do_copy = env->do_copy;
/* Get the schedule predecessor node to the perm.
ir_node *keep, *cpy;
op_copy_assoc_t *entry;
- if (arch_irn_is(other_different, ignore) ||
+ if (arch_irn_is_ignore(other_different) ||
!mode_is_datab(get_irn_mode(other_different))) {
DBG((dbg_constr, LEVEL_1, "ignore constraint for %+F because other_irn is ignore or not a datab node\n", irn));
return;
cpy = find_copy(skip_Proj(irn), other_different);
if (! cpy) {
cpy = be_new_Copy(cls, irg, block, other_different);
- be_node_set_flags(cpy, BE_OUT_POS(0), arch_irn_flags_dont_spill);
+ arch_irn_set_flags(cpy, arch_irn_flags_dont_spill);
DBG((dbg_constr, LEVEL_1, "created non-spillable %+F for value %+F\n", cpy, other_different));
} else {
DBG((dbg_constr, LEVEL_1, "using already existing %+F for value %+F\n", cpy, other_different));
/* of the other_different irn in case of CopyKeep. */
if (has_irn_users(other_different)) {
keep = be_new_CopyKeep_single(cls, irg, block, cpy, irn, get_irn_mode(other_different));
- be_node_set_reg_class(keep, 1, cls);
+ be_node_set_reg_class_in(keep, 1, cls);
} else {
ir_node *in[2];
/* set register class for all kept inputs */
for (j = 1; j <= n_melt; ++j)
- be_node_set_reg_class(new_ck, j, entry->cls);
+ be_node_set_reg_class_in(new_ck, j, entry->cls);
ir_nodeset_insert(&entry->copies, new_ck);
void assure_constraints(be_irg_t *birg) {
ir_graph *irg = be_get_birg_irg(birg);
constraint_env_t cenv;
- ir_node **nodes;
ir_nodemap_iterator_t map_iter;
ir_nodemap_entry_t map_entry;
/* for all */
foreach_ir_nodemap(&cenv.op_set, map_entry, map_iter) {
- op_copy_assoc_t *entry = map_entry.data;
- int n;
- ir_node *cp;
- ir_nodeset_iterator_t iter;
+ op_copy_assoc_t *entry = map_entry.data;
+ int n = ir_nodeset_size(&entry->copies);
+ ir_node **nodes = ALLOCAN(ir_node*, n);
+ ir_node *cp;
+ ir_nodeset_iterator_t iter;
be_ssa_construction_env_t senv;
- n = ir_nodeset_size(&entry->copies);
- nodes = alloca(n * sizeof(nodes[0]));
-
/* put the node in an array */
DBG((dbg_constr, LEVEL_1, "introduce copies for %+F ", map_entry.node));
new_size = arity - n_moved;
if(new_size == 0) {
+ sched_remove(perm);
+ kill_node(perm);
return 0;
}
- map = alloca(new_size * sizeof(map[0]));
- proj_map = alloca(arity * sizeof(proj_map[0]));
+ map = ALLOCAN(int, new_size);
+ proj_map = ALLOCAN(int, arity);
memset(proj_map, -1, sizeof(proj_map[0]));
n = 0;
for (i = 0; i < arity; ++i) {