Commit 81a12b76 by David Malcolm Committed by David Malcolm

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
parent 270430ff
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>
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))
#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,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment