* @brief Backend IRG modification routines.
* @author Sebastian Hack, Daniel Grund, Matthias Braun, Christian Wuerdig
* @date 04.05.2005
- * @version $Id$
*
* This file contains the following IRG modifications for be routines:
* - insertion of Perm nodes
ir_nodeset_t live;
ir_nodeset_iterator_t iter;
- ir_node *curr, *irn, *perm, **nodes;
+ ir_node *irn, *perm, **nodes;
size_t i, n;
DBG((dbg, LEVEL_1, "Insert Perm after: %+F\n", pos));
sched_add_after(pos, perm);
free(nodes);
- curr = perm;
for (i = 0; i < n; ++i) {
ir_node *perm_op = get_irn_n(perm, i);
const arch_register_t *reg = arch_get_irn_register(perm_op);
ir_node *proj = new_r_Proj(perm, mode, i);
arch_set_irn_register(proj, reg);
- curr = proj;
-
be_ssa_construction_init(&senv, irg);
be_ssa_construction_add_copy(&senv, perm_op);
be_ssa_construction_add_copy(&senv, proj);
sched_foreach(block, node) {
if (! is_Jmp(node)
- && !(arch_irn_get_flags(node) & arch_irn_flags_simple_jump))
+ && !(arch_get_irn_flags(node) & arch_irn_flags_simple_jump))
goto check_preds;
if (jump != NULL) {
/* we should never have 2 jumps in a block */
assert(succ_block == NULL);
succ_block = get_edge_src_irn(edge);
- if (has_Block_entity(succ_block) && has_Block_entity(block)) {
+ if (get_Block_entity(succ_block) != NULL
+ && get_Block_entity(block) != NULL) {
/*
* Currently we can add only one label for a block.
* Therefore we cannot combine them if both block already have one.
set_irn_n(succ_block, pos, pred);
}
- if (has_Block_entity(block)) {
+ if (get_Block_entity(block) != NULL) {
/* move the label to the successor block */
ir_entity *entity = get_Block_entity(block);
set_Block_entity(succ_block, entity);
if (blocks_removed) {
/* invalidate analysis info */
- set_irg_doms_inconsistent(irg);
- set_irg_extblk_inconsistent(irg);
- set_irg_loopinfo_inconsistent(irg);
+ clear_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_DOMINANCE
+ | IR_GRAPH_STATE_VALID_EXTENDED_BLOCKS);
}
return blocks_removed;
}