mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 14:00:30 +00:00
assert: Suppress pedantic warning caused by statement expression
This commit is contained in:
parent
86c6519ee7
commit
8b2c63e4e2
@ -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>
|
||||
|
||||
* benchtests/bench-memmove-large.c: Print output in JSON
|
||||
|
@ -91,13 +91,19 @@ __END_DECLS
|
||||
? __ASSERT_VOID_CAST (0) \
|
||||
: __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
|
||||
# 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) \
|
||||
({ \
|
||||
((void) sizeof ((expr) == 0), __extension__ ({ \
|
||||
if (expr) \
|
||||
; /* empty */ \
|
||||
else \
|
||||
__assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION); \
|
||||
})
|
||||
}))
|
||||
# endif
|
||||
|
||||
# ifdef __USE_GNU
|
||||
@ -113,7 +119,7 @@ __END_DECLS
|
||||
C9x has a similar variable called __func__, but prefer the GCC one since
|
||||
it demangles C++ function names. */
|
||||
# if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4)
|
||||
# define __ASSERT_FUNCTION __PRETTY_FUNCTION__
|
||||
# define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
|
||||
# else
|
||||
# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
|
||||
# define __ASSERT_FUNCTION __func__
|
||||
|
Loading…
Reference in New Issue
Block a user