Hello! When compiling regex.c from libiberty, several warnings are emitted:
../../gcc-svn/trunk/libiberty/regex.c: In function 'byte_regex_compile': ../../gcc-svn/trunk/libiberty/regex.c:154:47: warning: right-hand operand of comma expression has no effect [-Wunused-value] # define bzero(s, n) (memset (s, '\0', n), (s)) ^ ../../gcc-svn/trunk/libiberty/regex.c:3126:13: note: in expansion of macro 'bzero' bzero (b, (1 << BYTEWIDTH) / BYTEWIDTH); ^ Attached patch changes the return value of the bzero macro to void, as defined in a 4.3BSD: void bzero(void *s, size_t n); As an additional benefit, the changed macro now generates warning when its return value is used (which is *not* the case in regex.c): --cut here-- int *arr; # define bzero(s, n) (memset (s, '\0', n), (void) 0) void test (void) { void *t = bzero (arr, 10000); (void) t; } --cut here-- gcc -O2 -Wall bz.c: In function 'test': bz.c:7:27: error: void value not ignored as it ought to be # define bzero(s, n) (memset (s, '\0', n), (void) 0) ^ bz.c:11:13: note: in expansion of macro 'bzero' void *t = bzero (arr, 10000); ^ 2014-03-13 Uros Bizjak <ubiz...@gmail.com> * regex.c (bzero) [!_LIBC]: Change return value to void. Patch was bootstrapped and regression tested on x86_64-pc-linux-gnu. OK for mainline (and release branches, perhaps)? Uros.
Index: regex.c =================================================================== --- regex.c (revision 208529) +++ regex.c (working copy) @@ -151,7 +151,7 @@ char *realloc (); # include <string.h> # ifndef bzero # ifndef _LIBC -# define bzero(s, n) (memset (s, '\0', n), (s)) +# define bzero(s, n) (memset (s, '\0', n), (void) 0) # else # define bzero(s, n) __bzero (s, n) # endif