From 867d266611c22def33e26c44482fb13f915c9620 Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Wed, 12 Nov 2008 14:26:25 +0000 Subject: [PATCH] The upper bits of Or and Xor can be clean, too. [r23591] --- ir/be/ia32/ia32_transform.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ir/be/ia32/ia32_transform.c b/ir/be/ia32/ia32_transform.c index bfd6abe99..6f5a3f385 100644 --- a/ir/be/ia32/ia32_transform.c +++ b/ir/be/ia32/ia32_transform.c @@ -2680,6 +2680,12 @@ static bool upper_bits_clean(ir_node *transformed_node, ir_mode *mode) upper_bits_clean(get_irn_n(transformed_node, n_ia32_And_right), mode) || upper_bits_clean(get_irn_n(transformed_node, n_ia32_And_left), mode); + case iro_ia32_Or: + case iro_ia32_Xor: + return + upper_bits_clean(get_irn_n(transformed_node, n_ia32_binary_right), mode) && + upper_bits_clean(get_irn_n(transformed_node, n_ia32_binary_left), mode); + case iro_ia32_Const: case iro_ia32_Immediate: { const ia32_immediate_attr_t *attr = @@ -2695,7 +2701,6 @@ static bool upper_bits_clean(ir_node *transformed_node, ir_mode *mode) } default: - /* TODO recurse on Or, Xor, ... if appropriate? */ return false; } } -- 2.20.1