From 0910ef4a7bad0429f8f0f29ecc1291c5aa8f3059 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Fri, 9 Sep 2011 23:28:14 +0200 Subject: [PATCH] ia32: fix overly conservative upper_bits_clean (by avoiding undefined behaviour) --- ir/be/ia32/ia32_transform.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ir/be/ia32/ia32_transform.c b/ir/be/ia32/ia32_transform.c index b1d7d6ce0..555c2cc8d 100644 --- a/ir/be/ia32/ia32_transform.c +++ b/ir/be/ia32/ia32_transform.c @@ -3022,7 +3022,8 @@ static bool upper_bits_clean(ir_node *transformed_node, ir_mode *mode) return shifted == 0 || shifted == -1; } else { unsigned long shifted = (unsigned long)attr->offset; - shifted >>= get_mode_size_bits(mode); + shifted >>= get_mode_size_bits(mode)-1; + shifted >>= 1; return shifted == 0; } } -- 2.20.1