summaryrefslogtreecommitdiff
path: root/string/bits/string3.h
diff options
context:
space:
mode:
Diffstat (limited to 'string/bits/string3.h')
-rw-r--r--string/bits/string3.h6
1 files changed, 6 insertions, 0 deletions
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));
}