/* Last definition of a block. */
ir_node *last_definition;
- };
+ } u;
};
typedef struct constr_info constr_info;
def_info->is_definition = true;
skip_info->is_definition = true;
- skip_info->definition = def;
+ skip_info->u.definition = def;
// Set the last definition if we only introduce one definition for the block
if (has_definition(block)) {
assert(!block_info->already_processed);
- block_info->last_definition = NULL;
+ block_info->u.last_definition = NULL;
} else {
mark_irn_visited(block);
- block_info->last_definition = def;
+ block_info->u.last_definition = def;
}
}
if (is_definition(env, node)) {
constr_info *info = get_info(env, node);
- def = info->definition;
+ def = info->u.definition;
DBG((dbg, LEVEL_3, "\t...found definition %+F\n", def));
}
}
block_info->already_processed = true;
- block_info->last_definition = def;
+ block_info->u.last_definition = def;
}
/**
ir_node *block)
{
constr_info *block_info = get_or_set_info(env, block);
- ir_node *last_definition = block_info->last_definition;
+ ir_node *last_definition = block_info->u.last_definition;
if (last_definition != NULL)
return last_definition;
sched_foreach_reverse(block, def) {
if (is_definition(env, def)) {
constr_info *info = get_info(env, def);
- def = info->definition;
+ def = info->u.definition;
DBG((dbg, LEVEL_3, "\t...found definition %+F\n", def));
break;
assert(def && "No definition found");
- block_info->last_definition = def;
+ block_info->u.last_definition = def;
}
- return block_info->last_definition;
+ return block_info->u.last_definition;
} else if (Block_block_visited(block)) {
ir_node *phi = insert_dummy_phi(env, block);
- block_info->last_definition = phi;
+ block_info->u.last_definition = phi;
return phi;
} else {
ir_node *def = get_def_at_idom(env, block);
- block_info->last_definition = def;
+ block_info->u.last_definition = def;
return def;
}