From: Doug C. <idi...@us...> - 2012-03-16 09:12:04
|
The existing static assert used in machine.h and psymodel.c is problematic. #define STATIC_ASSERT_EQUAL_DIMENSION(A,B) \ {extern char static_assert_##A[dimension_of(A) == dimension_of(B) ? 1 : -1];(void) static_assert_##A;} It creates a symbol and references it, meaning the symbol may not be optimized away. In addition, while this is probably a compiler bug, it does fail to compile when using the VC2012 beta with LTCG enabled. My preferred definition for this static assertion is as follows: #define STATIC_ASSERT_EQUAL_DIMENSION(A,B) \ enum {static_assert_##A = 1/((dimension_of(A) == dimension_of(B)) ? 1 : 0)} This works, doesn't define anything, and fixes my build failure. Please consider fixing this. Thanks! Doug |