From a7e607641a2b6f1d89e1c5e6eaf91d6faf156286 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Mon, 18 Nov 2019 19:33:06 -0800 Subject: [PATCH] mesa: Silence 'left shift of negative value' warning in BPTC compression code src/util/format/../../mesa/main/texcompress_bptc_tmp.h:830:31: warning: left shift of negative value [-Wshift-negative-value] 830 | value |= (~(int32_t) 0) << n_bits; | ^~ v2: Rewrite to just shift left then shift right. Based on conversation with Neil in https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2792#note_320272, this should be fine. Reviewed-by: Pierre-Eric Pelloux-Prayer [v1] Reviewed-by: Neil Roberts --- src/mesa/main/texcompress_bptc_tmp.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/mesa/main/texcompress_bptc_tmp.h b/src/mesa/main/texcompress_bptc_tmp.h index 90837d6af3a..95b83814a3c 100644 --- a/src/mesa/main/texcompress_bptc_tmp.h +++ b/src/mesa/main/texcompress_bptc_tmp.h @@ -826,11 +826,10 @@ static int32_t sign_extend(int32_t value, int n_bits) { - if ((value & (1 << (n_bits - 1)))) { - value |= (~(int32_t) 0) << n_bits; - } + assert(n_bits > 0 && n_bits < 32); - return value; + const unsigned n = 32 - n_bits; + return (int32_t)((uint32_t)value << n) >> n; } static int -- 2.30.2