From: Christoph Mallon Date: Thu, 14 Aug 2008 19:43:04 +0000 (+0000) Subject: Remove the potentially existing Proj when replacing a Cmp() by a Test(). X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=2440343b60976b5a7bcc1ef290f7ca693336254b;p=libfirm Remove the potentially existing Proj when replacing a Cmp() by a Test(). [r21183] --- diff --git a/ir/be/ia32/ia32_optimize.c b/ir/be/ia32/ia32_optimize.c index d42eb0169..341437cc7 100644 --- a/ir/be/ia32/ia32_optimize.c +++ b/ir/be/ia32/ia32_optimize.c @@ -178,6 +178,8 @@ static void peephole_ia32_Cmp(ir_node *const node) int cmp_unsigned; ir_node *test; arch_register_t const *reg; + ir_edge_t const *edge; + ir_edge_t const *tmp; if (get_ia32_op_type(node) != ia32_Normal) return; @@ -212,6 +214,13 @@ static void peephole_ia32_Cmp(ir_node *const node) reg = arch_get_irn_register(arch_env, node); arch_set_irn_register(arch_env, test, reg); + foreach_out_edge_safe(node, edge, tmp) { + ir_node *const user = get_edge_src_irn(edge); + + if (is_Proj(user)) + exchange(user, test); + } + sched_add_before(node, test); be_peephole_exchange(node, test); }