summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--string/bits/string3.h6
2 files changed, 13 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index ab2220d9ea..4acdcc3ced 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-11-27  Siddhesh Poyarekar  <siddhesh@redhat.com>
+
+	* string/bits/string3.h (__warn_memset_zero_len): Don't
+	declare for gcc newer than 5.0.
+	(memset): Don't test for zero-length __LEN for gcc newer than
+	5.0.
+
 2014-11-27  Joseph Myers  <joseph@codesourcery.com>
 
 	* stdio-common/tst-fmemopen.c (do_test): Cast st_size values to
diff --git a/string/bits/string3.h b/string/bits/string3.h
index 760609033a..801e7aca24 100644
--- a/string/bits/string3.h
+++ b/string/bits/string3.h
@@ -19,8 +19,10 @@
 # error "Never use <bits/string3.h> directly; include <string.h> instead."
 #endif
 
+#if !__GNUC_PREREQ (5,0)
 __warndecl (__warn_memset_zero_len,
 	    "memset used with constant zero length parameter; this could be due to transposed parameters");
+#endif
 
 #ifndef __cplusplus
 /* XXX This is temporarily.  We should not redefine any of the symbols
@@ -75,12 +77,16 @@ __NTH (mempcpy (void *__restrict __dest, const void *__restrict __src,
 __fortify_function void *
 __NTH (memset (void *__dest, int __ch, size_t __len))
 {
+  /* GCC-5.0 and newer implements these checks in the compiler, so we don't
+     need them here.  */
+#if !__GNUC_PREREQ (5,0)
   if (__builtin_constant_p (__len) && __len == 0
       && (!__builtin_constant_p (__ch) || __ch != 0))
     {
       __warn_memset_zero_len ();
       return __dest;
     }
+#endif
   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
 }