mirror of git://gcc.gnu.org/git/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
This commit is contained in:
parent
270430ff3e
commit
81a12b7606
|
|
@ -1,3 +1,8 @@
|
||||||
|
2016-07-27 David Malcolm <dmalcolm@redhat.com>
|
||||||
|
|
||||||
|
* system.h (STATIC_ASSERT): Use static_assert if building
|
||||||
|
with C++11 onwards.
|
||||||
|
|
||||||
2016-07-27 Richard Biener <rguenther@suse.de>
|
2016-07-27 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
PR tree-optimization/72517
|
PR tree-optimization/72517
|
||||||
|
|
|
||||||
|
|
@ -752,9 +752,14 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
|
||||||
#define STATIC_CONSTANT_P(X) (false && (X))
|
#define STATIC_CONSTANT_P(X) (false && (X))
|
||||||
#endif
|
#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) \
|
#define STATIC_ASSERT(X) \
|
||||||
typedef int assertion1[(X) ? 1 : -1] ATTRIBUTE_UNUSED
|
typedef int assertion1[(X) ? 1 : -1] ATTRIBUTE_UNUSED
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Provide a fake boolean type. We make no attempt to use the
|
/* Provide a fake boolean type. We make no attempt to use the
|
||||||
C99 _Bool, as it may not be available in the bootstrap compiler,
|
C99 _Bool, as it may not be available in the bootstrap compiler,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue