eal/ppc: ignore gcc 10 stringop-overflow warnings
Checks
Commit Message
Suppress gcc warning "warning: writing 16 bytes into a region of
size 0" for users of the POWER rte_memcpy() function. Existing
rte_memcpy() code takes different code paths based on the actual
size of the move so the warning is already addressed. See also
commit b5b3ea803e47 ("eal/x86: ignore gcc 10 stringop-overflow warnings")
Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
---
v2:
- update copyright year
- rebase for 21.11-rc0
---
lib/eal/ppc/include/rte_memcpy.h | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
--
2.27.0
Comments
> Suppress gcc warning "warning: writing 16 bytes into a region of
> size 0" for users of the POWER rte_memcpy() function. Existing
> rte_memcpy() code takes different code paths based on the actual
> size of the move so the warning is already addressed. See also
> commit b5b3ea803e47 ("eal/x86: ignore gcc 10 stringop-overflow warnings")
>
> Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
> ---
> v2:
> - update copyright year
> - rebase for 21.11-rc0
David M,
Any chance of getting this approved in the 21.11 cycle? Patch was
originally submitted on 6/23, is only applicable to PPC architecture,
and has no functional impact because it only disables warnings.
Patchwork reports a performance test regression on x86 systems:
http://patches.dpdk.org/project/dpdk/patch/20210902221514.3215704-1-drc@linux.vnet.ibm.com/
But I don't see how that is possible. Applying the patch on a local x86
system results in identical x86 binaries with and without the patch
applied. It would appear that the test-to-test performance variations
exceed the failure threshold on the CI setup.
Dave
On Fri, Sep 3, 2021 at 12:15 AM David Christensen
<drc@linux.vnet.ibm.com> wrote:
>
> Suppress gcc warning "warning: writing 16 bytes into a region of
> size 0" for users of the POWER rte_memcpy() function. Existing
> rte_memcpy() code takes different code paths based on the actual
> size of the move so the warning is already addressed. See also
> commit b5b3ea803e47 ("eal/x86: ignore gcc 10 stringop-overflow warnings")
>
Cc: stable@dpdk.org
> Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
Applied, thanks.
@@ -1,6 +1,6 @@
/*
* SPDX-License-Identifier: BSD-3-Clause
- * Copyright (C) IBM Corporation 2014.
+ * Copyright (C) IBM Corporation 2014,2021
*/
#ifndef _RTE_MEMCPY_PPC_64_H_
@@ -18,11 +18,16 @@ extern "C" {
#include "generic/rte_memcpy.h"
-#if (GCC_VERSION >= 90000 && GCC_VERSION < 90400)
+#if defined(RTE_TOOLCHAIN_GCC) && (GCC_VERSION >= 90000)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Warray-bounds"
#endif
+#if defined(RTE_TOOLCHAIN_GCC) && (GCC_VERSION >= 100000)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wstringop-overflow"
+#endif
+
static inline void
rte_mov16(uint8_t *dst, const uint8_t *src)
{
@@ -198,7 +203,11 @@ rte_memcpy_func(void *dst, const void *src, size_t n)
return ret;
}
-#if (GCC_VERSION >= 90000 && GCC_VERSION < 90400)
+#if defined(RTE_TOOLCHAIN_GCC) && (GCC_VERSION >= 100000)
+#pragma GCC diagnostic pop
+#endif
+
+#if defined(RTE_TOOLCHAIN_GCC) && (GCC_VERSION >= 90000)
#pragma GCC diagnostic pop
#endif