Avoid spurious GCC warnings in STATIC_ASSERT() macro.
authorPaul Berry <stereotype441@gmail.com>
Tue, 2 Apr 2013 16:51:47 +0000 (09:51 -0700)
committerPaul Berry <stereotype441@gmail.com>
Thu, 4 Apr 2013 16:52:18 +0000 (09:52 -0700)
GCC 4.8 now warns about typedefs that are local to a scope and not
used anywhere within that scope.  This produced spurious warnings with
the STATIC_ASSERT() macro (which used a typedef to provoke a compile
error in the event of an assertion failure).

This patch switches to a simpler technique that avoids the warning.

v2: Avoid GCC-specific syntax.  Also update p_compiler.h.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/gallium/include/pipe/p_compiler.h
src/mesa/main/compiler.h

index a131969c6ebe8702a4996e2e2314deb888517c04..78ec83c8489d494fee63a5484da513d7572210b0 100644 (file)
@@ -255,7 +255,7 @@ void _ReadWriteBarrier(void);
  */
 #define STATIC_ASSERT(COND) \
    do { \
-      typedef int static_assertion_failed[(!!(COND))*2-1]; \
+      (void) sizeof(char [1 - 2*!(COND)]); \
    } while (0)
 
 
index 8b23665e6891a9761eddc27d828c8d153b7e8fcb..8431534c313847756a13034414448212eb6d1089 100644 (file)
@@ -256,7 +256,7 @@ static INLINE GLuint CPU_TO_LE32(GLuint x)
  */
 #define STATIC_ASSERT(COND) \
    do { \
-      typedef int static_assertion_failed[(!!(COND))*2-1]; \
+      (void) sizeof(char [1 - 2*!(COND)]); \
    } while (0)