Commit 6d1bc876 authored by Christoph Mallon's avatar Christoph Mallon
Browse files

Cond nodes are a kind of cf node, too. Therefore also ignore them when copying...

Cond nodes are a kind of cf node, too. Therefore also ignore them when copying block contents during condeval. Otherwise this leads to fake users during repeated condeval and somehow to a violation of the def-use-dominance.

[r14012]
parent 06746a3e
...@@ -210,7 +210,7 @@ static void copy_and_fix(ir_node *block, ir_node *copy_block, int j, const conde ...@@ -210,7 +210,7 @@ static void copy_and_fix(ir_node *block, ir_node *copy_block, int j, const conde
ir_mode *mode = get_irn_mode(node); ir_mode *mode = get_irn_mode(node);
/* ignore control flow */ /* ignore control flow */
if (mode == mode_X) if (mode == mode_X || is_Cond(node))
continue; continue;
/* we may not copy mode_b nodes, because this could produce phi with mode_bs which can't /* 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 */ be handled in all backends. Instead we duplicate the node and move it to it's users */
...@@ -269,7 +269,7 @@ static void copy_and_fix(ir_node *block, ir_node *copy_block, int j, const conde ...@@ -269,7 +269,7 @@ static void copy_and_fix(ir_node *block, ir_node *copy_block, int j, const conde
ir_node *node = get_edge_src_irn(edge); ir_node *node = get_edge_src_irn(edge);
ir_mode *mode = get_irn_mode(node); ir_mode *mode = get_irn_mode(node);
if (mode == mode_X) if (mode == mode_X || is_Cond(node))
continue; continue;
if (mode == mode_b) if (mode == mode_b)
continue; continue;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment