[PATCH, libiberty]: Avoid 'right-hand operand of comma expression has no effect' when compiling regex.c

Uros Bizjak ubizjak@gmail.com
Thu Mar 13 18:32:00 GMT 2014


On Thu, Mar 13, 2014 at 6:30 PM, Ian Lance Taylor <iant@google.com> wrote:
> On Thu, Mar 13, 2014 at 3:36 AM, Uros Bizjak <ubizjak@gmail.com> wrote:
>>
>> 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):
>
> I'm not worried about anybody using the return value incorrectly in
> this file.  I think we should just
>
> #      define bzero(s, n)       memset (s, '\0', n)
>
> I'll approve that change if it works.

Attached patch compiles without warnings as well. However, in some
case, we have similar situation with unused return value of

#     define memcpy(d, s, n)    (bcopy (s, d, n), (d))

so, I put (void) casts to memcpy call to avoid eventual "right-hand
operand of comma expression has no effect" warnings there.

2014-03-13  Uros Bizjak  <ubizjak@gmail.com>

    * regex.c (bzero) [!_LIBC]: Define without coma expression.
    (regerror): Cast the call to memcpy to (void) to avoid unused
    value warnings.

Is this version acceptable for mainline?

Uros.
-------------- next part --------------
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 208550)
+++ ChangeLog	(working copy)
@@ -1,3 +1,9 @@
+2014-03-13  Uros Bizjak  <ubizjak@gmail.com>
+
+	* regex.c (bzero) [!_LIBC]: Define without coma expression.
+	(regerror): Cast the call to memcpy to (void) to avoid unused
+	value warnings.
+
 2014-01-28  Thomas Schwinge  <thomas@codesourcery.com>
 
 	* cp-demangle.c (d_demangle_callback): Put an abort call in place,
Index: regex.c
===================================================================
--- regex.c	(revision 208550)
+++ 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)
 #     else
 #      define bzero(s, n)	__bzero (s, n)
 #     endif
@@ -8093,12 +8093,12 @@ regerror (int errcode, const regex_t *preg ATTRIBU
 #if defined HAVE_MEMPCPY || defined _LIBC
 	  *((char *) mempcpy (errbuf, msg, errbuf_size - 1)) = '\0';
 #else
-          memcpy (errbuf, msg, errbuf_size - 1);
+          (void) memcpy (errbuf, msg, errbuf_size - 1);
           errbuf[errbuf_size - 1] = 0;
 #endif
         }
       else
-        memcpy (errbuf, msg, msg_size);
+        (void) memcpy (errbuf, msg, msg_size);
     }
 
   return msg_size;


More information about the Gcc-patches mailing list