/*
- * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
foreach_out_edge(block, edge) {
ir_node *node = get_edge_src_irn(edge);
ir_node *copy;
- ir_mode *mode = get_irn_mode(node);
+ ir_mode *mode;
+
+ if (is_Block(node)) {
+ /* Block->Block edge, should be the MacroBlock edge */
+ assert(get_Block_MacroBlock(node) == block && "Block->Block edge found");
+ continue;
+ }
/* ignore control flow */
+ mode = get_irn_mode(node);
if (mode == mode_X || is_Cond(node))
continue;
#ifdef AVOID_PHIB
/* we may not copy mode_b nodes, because this could produce phi with
* mode_bs which can't be handled in all backends. Instead we duplicate
- * the node and move it to it's users */
+ * the node and move it to its users */
if (mode == mode_b) {
const ir_edge_t *edge, *next;
ir_node *pred;
ir_node *vals[2];
ir_node *blocks[2];
ir_node *node = get_edge_src_irn(edge);
- ir_mode *mode = get_irn_mode(node);
+ ir_mode *mode;
+
+ if (is_Block(node)) {
+ /* Block->Block edge, should be the MacroBlock edge */
+ assert(get_Block_MacroBlock(node) == block && "Block->Block edge found");
+ continue;
+ }
+ mode = get_irn_mode(node);
if (mode == mode_X || is_Cond(node))
continue;
#ifdef AVOID_PHIB
edges_assure(irg);
set_using_irn_link(irg);
- set_using_visited(irg);
+ set_using_irn_visited(irg);
changed = 0;
do {
set_irg_loopinfo_inconsistent(irg);
}
- clear_using_visited(irg);
+ clear_using_irn_visited(irg);
clear_using_irn_link(irg);
}