From: Matthias Braun Date: Fri, 19 Jun 2009 15:08:39 +0000 (+0000) Subject: another instance of wrong block in new_Proj X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=5c1ded548038459acf350812d820d8bbd7901ab0;p=libfirm another instance of wrong block in new_Proj [r26164] --- diff --git a/ir/ir/iropt.c b/ir/ir/iropt.c index 2a4b6e12f..94bd2d577 100644 --- a/ir/ir/iropt.c +++ b/ir/ir/iropt.c @@ -3567,14 +3567,16 @@ static ir_node *transform_node_Not(ir_node *n) { HANDLE_UNOP_PHI(tarval_not,a,c); /* check for a boolean Not */ - if (mode == mode_b && - is_Proj(a) && - is_Cmp(get_Proj_pred(a))) { - /* We negate a Cmp. The Cmp has the negated result anyways! */ - n = new_r_Proj(current_ir_graph, get_nodes_block(n), get_Proj_pred(a), - mode_b, get_negated_pnc(get_Proj_proj(a), mode_b)); - DBG_OPT_ALGSIM0(oldn, n, FS_OPT_NOT_CMP); - return n; + if (mode == mode_b && is_Proj(a)) { + ir_node *a_pred = get_Proj_pred(a); + if (is_Cmp(a_pred)) { + ir_node *cmp_block = get_nodes_block(a_pred); + /* We negate a Cmp. The Cmp has the negated result anyways! */ + n = new_r_Proj(current_ir_graph, cmp_block, get_Proj_pred(a), + mode_b, get_negated_pnc(get_Proj_proj(a), mode_b)); + DBG_OPT_ALGSIM0(oldn, n, FS_OPT_NOT_CMP); + return n; + } } if (is_Eor(a)) { ir_node *eor_b = get_Eor_right(a);