From: David Malcolm Date: Wed, 27 Jul 2016 14:49:06 +0000 (+0000) Subject: Use static_assert for STATIC_ASSERT for C++11 onwards X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=81a12b7606c58a7d6bea3151be426ef3e91b45ea;p=gcc.git Use static_assert for STATIC_ASSERT for C++11 onwards C++11 has a static_assert (COND, MESSAGE) which gives more readable error messages for STATIC_ASSERT than our current implementation. This patch makes us use it if __cplusplus >= 201103L There's also a provisional static_assert (COND) in C++1z, but presumably we should wait until that one is fully standardized before using it. gcc/ChangeLog: * system.h (STATIC_ASSERT): Use static_assert if building with C++11 onwards. From-SVN: r238786 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d2a295352ff..e00b2c4432f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-07-27 David Malcolm + + * system.h (STATIC_ASSERT): Use static_assert if building + with C++11 onwards. + 2016-07-27 Richard Biener PR tree-optimization/72517 diff --git a/gcc/system.h b/gcc/system.h index 78a7da63d8e..8a171974819 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -752,9 +752,14 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; #define STATIC_CONSTANT_P(X) (false && (X)) #endif -/* Until we can use C++11's static_assert. */ +/* static_assert (COND, MESSAGE) is available in C++11 onwards. */ +#if __cplusplus >= 201103L +#define STATIC_ASSERT(X) \ + static_assert ((X), #X) +#else #define STATIC_ASSERT(X) \ typedef int assertion1[(X) ? 1 : -1] ATTRIBUTE_UNUSED +#endif /* Provide a fake boolean type. We make no attempt to use the C99 _Bool, as it may not be available in the bootstrap compiler,