1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-07 06:43:00 +03:00

assert: Suppress pedantic warning caused by statement expression

This commit is contained in:
Florian Weimer
2017-08-11 15:36:08 +02:00
parent 86c6519ee7
commit 8b2c63e4e2
2 changed files with 16 additions and 3 deletions

View File

@@ -1,3 +1,10 @@
2017-08-11 Florian Weimer <fweimer@redhat.com>
[BZ #21242]
* assert/assert.h [__GNUC__ && !__STRICT_ANSI__] (assert):
Suppress pedantic warning resulting from statement expression.
(__ASSERT_FUNCTION): Add missing __extension__.
2017-08-11 Siddhesh Poyarekar <siddhesh@sourceware.org> 2017-08-11 Siddhesh Poyarekar <siddhesh@sourceware.org>
* benchtests/bench-memmove-large.c: Print output in JSON * benchtests/bench-memmove-large.c: Print output in JSON

View File

@@ -91,13 +91,19 @@ __END_DECLS
? __ASSERT_VOID_CAST (0) \ ? __ASSERT_VOID_CAST (0) \
: __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION)) : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
# else # else
/* The first occurrence of EXPR is not evaluated due to the sizeof,
but will trigger any pedantic warnings masked by the __extension__
for the second occurrence. The explicit comparison against zero is
required to support function pointers and bit fields in this
context, and to suppress the evaluation of variable length
arrays. */
# define assert(expr) \ # define assert(expr) \
({ \ ((void) sizeof ((expr) == 0), __extension__ ({ \
if (expr) \ if (expr) \
; /* empty */ \ ; /* empty */ \
else \ else \
__assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION); \ __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION); \
}) }))
# endif # endif
# ifdef __USE_GNU # ifdef __USE_GNU
@@ -113,7 +119,7 @@ __END_DECLS
C9x has a similar variable called __func__, but prefer the GCC one since C9x has a similar variable called __func__, but prefer the GCC one since
it demangles C++ function names. */ it demangles C++ function names. */
# if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4) # if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4)
# define __ASSERT_FUNCTION __PRETTY_FUNCTION__ # define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
# else # else
# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
# define __ASSERT_FUNCTION __func__ # define __ASSERT_FUNCTION __func__