Mesa (master): mesa: fix MSVC bitshift overflow warnings

Brian Paul brianp at kemper.freedesktop.org
Fri Mar 30 17:12:03 UTC 2018


Module: Mesa
Branch: master
Commit: cdc34e2cea73b7932e51ad407595d487d2d565c3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cdc34e2cea73b7932e51ad407595d487d2d565c3

Author: Brian Paul <brianp at vmware.com>
Date:   Fri Mar 30 09:06:01 2018 -0600

mesa: fix MSVC bitshift overflow warnings

In the BITFIELD_MASK() macro, if b==32 the expression evaluates to
~0u, but the compiler still sees the expression (1 << 32) in the
unused part and issues a warning about integer bitshift overflow.

Fix that by using (b) % 32 to ensure the max shift is 31 bits.

This issue has been present for a while, but shows up much more
often because of the recent VBO changes.

Reviewed-by: Mathias Fröhlich <mathias.froehlich at web.de>
Reviewed-by: Roland Scheidegger <sroland at vmware.com>

---

 src/mesa/main/mtypes.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 801bd17666..b7a7b34a09 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -59,7 +59,7 @@ extern "C" {
 #define BITFIELD_BIT(b)      ((GLbitfield)1 << (b))
 /** Set all bits up to excluding bit b */
 #define BITFIELD_MASK(b)      \
-   ((b) == 32 ? (~(GLbitfield)0) : BITFIELD_BIT(b) - 1)
+   ((b) == 32 ? (~(GLbitfield)0) : BITFIELD_BIT((b) % 32) - 1)
 /** Set count bits starting from bit b  */
 #define BITFIELD_RANGE(b, count) \
    (BITFIELD_MASK((b) + (count)) & ~BITFIELD_MASK(b))




More information about the mesa-commit mailing list