From 8217417201bbb19df72fdd29d7155f75d80a1527 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Sat, 25 Mar 2006 11:06:24 +0000 Subject: [PATCH] BugFix: test can only be created for a&b == 0 or a&b != 0 --- ir/be/ia32/ia32_transform.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ir/be/ia32/ia32_transform.c b/ir/be/ia32/ia32_transform.c index d28f9003b..040db6779 100644 --- a/ir/be/ia32/ia32_transform.c +++ b/ir/be/ia32/ia32_transform.c @@ -1284,9 +1284,11 @@ static ir_node *gen_Cond(ia32_transform_env_t *env) { expr = get_expr_op(cmp_a, cmp_b); if (cnst && expr) { - if (mode_is_int(get_irn_mode(expr))) { + pn_Cmp pnc = get_Proj_proj(sel); + + if ((pnc == pn_Cmp_Eq || pnc == pn_Cmp_Lg) && mode_is_int(get_irn_mode(expr))) { if (classify_tarval(get_ia32_Immop_tarval(cnst)) == TV_CLASSIFY_NULL) { - /* a Cmp A, 0 */ + /* a Cmp A =/!= 0 */ ir_node *op1 = expr; ir_node *op2 = expr; ir_node *and = skip_Proj(expr); -- 2.20.1