From 450c58e39d9a8343e0f353242282bfa00091418b Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Sun, 30 Dec 2007 01:25:05 +0000 Subject: [PATCH] Ignore Block->Block out edges when iterating over all out edges of a Block. These should be MacroBlock edges and can be safely ignored. [r17102] --- ir/opt/condeval.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/ir/opt/condeval.c b/ir/opt/condeval.c index 65682ab0b..85b42adba 100644 --- a/ir/opt/condeval.c +++ b/ir/opt/condeval.c @@ -256,9 +256,16 @@ static void copy_and_fix(const condeval_env_t *env, ir_node *block, 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 @@ -310,8 +317,15 @@ static void copy_and_fix(const condeval_env_t *env, ir_node *block, 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 -- 2.20.1