From: Ian Romanick Date: Tue, 19 Nov 2019 03:33:06 +0000 (-0800) Subject: mesa: Silence 'left shift of negative value' warning in BPTC compression code X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a7e607641a2b6f1d89e1c5e6eaf91d6faf156286;p=mesa.git 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 --- 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