static allocation_info_t *get_allocation_info(ir_node *node)
{
allocation_info_t *info;
- if (!irn_visited(node)) {
+ if (!irn_visited_else_mark(node)) {
size_t size = sizeof(info[0]) + n_regs * sizeof(info->prefs[0]);
info = obstack_alloc(&obst, size);
memset(info, 0, size);
set_irn_link(node, info);
- mark_irn_visited(node);
} else {
info = get_irn_link(node);
}
block_info_t *info;
assert(is_Block(block));
- if (!irn_visited(block)) {
+ if (!irn_visited_else_mark(block)) {
size_t size = sizeof(info[0]) + n_regs * sizeof(info->assignments[0]);
info = obstack_alloc(&obst, size);
memset(info, 0, size);
set_irn_link(block, info);
- mark_irn_visited(block);
} else {
info = get_irn_link(block);
}
if (neighbor == node)
continue;
- neighbor_info = get_allocation_info(neighbor);
+ neighbor_info = get_allocation_info(neighbor);
for (r = 0; r < n_regs; ++r) {
if (!rbitset_is_set(limited, r))
continue;
float factor = 1.0f / rbitset_popcnt(&req->other_same, arity);
for (i = 0; i < arity; ++i) {
ir_node *op;
- unsigned r;
+ unsigned r;
allocation_info_t *op_info;
if (!rbitset_is_set(&req->other_same, i))
sched_foreach_reverse(block, node) {
allocation_info_t *info;
- int i, arity;
+ int i, arity;
if (is_Phi(node)) {
/* TODO: handle constrained phi-nodes */
continue;
req = arch_get_register_req(node, i);
- if ((req->type & arch_register_req_type_limited) == 0)
+ if (!(req->type & arch_register_req_type_limited))
continue;
/* TODO: give penalties to neighbors for precolored nodes! */
/* are there any limitations for the i'th operand? */
req = arch_get_register_req(node, i);
- if ((req->type & arch_register_req_type_limited) == 0)
+ if (!(req->type & arch_register_req_type_limited))
continue;
limited = req->limited;
continue;
req = arch_get_register_req_out(proj);
- if (! (req->type & arch_register_req_type_limited))
+ if (!(req->type & arch_register_req_type_limited))
continue;
if (live_through_regs == NULL) {
continue;
req = arch_get_register_req(node, i);
- if ((req->type & arch_register_req_type_limited) == 0)
+ if (!(req->type & arch_register_req_type_limited))
continue;
limited = req->limited;
/**
* Walker: assign registers to all nodes of a block that
- * needs registers from the currently considered register class.
+ * need registers from the currently considered register class.
*/
static void allocate_coalesce_block(ir_node *block, void *data)
{
block_info_t **pred_block_infos;
(void) data;
- DB((dbg, LEVEL_2, "Allocating in block %+F\n",
- block));
+ DB((dbg, LEVEL_2, "Allocating in block %+F\n", block));
/* clear assignments */
block_info = get_block_info(block);
*/
static void be_straight_alloc_cls(void)
{
- n_regs = arch_register_class_n_regs(cls);
- lv = be_assure_liveness(birg);
+ lv = be_assure_liveness(birg);
be_liveness_assure_sets(lv);
be_liveness_assure_chk(lv);
stat_ev_ctx_push_str("bestraight_cls", cls->name);
- n_regs = cls->n_regs;
+ n_regs = arch_register_class_n_regs(cls);
ignore_regs = bitset_malloc(n_regs);
be_put_ignore_regs(birg, cls, ignore_regs);