From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 18FAC46096; Thu, 16 Jan 2025 02:59:41 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C297E402D3; Thu, 16 Jan 2025 02:59:36 +0100 (CET) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 9943C40156 for ; Thu, 16 Jan 2025 02:59:33 +0100 (CET) Received: by linux.microsoft.com (Postfix, from userid 1213) id E10A620BEBE1; Wed, 15 Jan 2025 17:59:32 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com E10A620BEBE1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1736992772; bh=RDFxp63XC+Gxtk8ZnBwHoF27SF82UQkRkeGtlH7Jq4E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pMLC6WAvjkO65EQ503+yt4kQj4IG2kXtWk5DUwT0gOtMhAD0sV/eXjPGrjgQNxYMI 3xMMSoLIhaFa2gsgxewImM8dzFu8SY2sWooxB5juP1BDHrLxGSkCSVLe0k9FBATZ08 0GnThiHujskmsoGkixy8S6gowvlStuGdMu4qOUlI= From: Andre Muezerie To: andremue@linux.microsoft.com Cc: dev@dpdk.org, stephen@networkplumber.org, bruce.richardson@intel.com Subject: [PATCH v13 0/3] add diagnostics macros to make code portable Date: Wed, 15 Jan 2025 17:55:08 -0800 Message-Id: <1736992511-20462-1-git-send-email-andremue@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1735263196-2809-1-git-send-email-andremue@linux.microsoft.com> References: <1735263196-2809-1-git-send-email-andremue@linux.microsoft.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org It was a common pattern to have "GCC diagnostic ignored" pragmas sprinkled over the code and only activate these pragmas for certain compilers (gcc and clang). Clang supports GCC's pragma for compatibility with existing source code, so #pragma GCC diagnostic and #pragma clang diagnostic are synonyms for Clang (https://clang.llvm.org/docs/UsersManual.html). Now that effort is being made to make the code compatible with MSVC these expressions would become more complex. It makes sense to hide this complexity behind macros. This makes maintenance easier as these macros are defined in a single place. As a plus the code becomes more readable as well. v13: * Renamed RTE_IGNORE_CAST_QUAL into RTE_PTR_DROP_QUALIFIERS. * Added (void *) cast to RTE_PTR_DROP_QUALIFIERS to avoid the need for casting the result in most places where the macro is used. v12: * Added macro RTE_IGNORE_CAST_QUAL and used it as a more compact and readable form to suppress warnings where a cast is used to remove a type qualifier. v11: * Added __rte_diagnostic_ignored_wcast_qual to a few more places where it was needed. v10: * Added __rte_diagnostic_ignored_wcast_qual to a few more places where it was needed. v9: * Added __rte_diagnostic_ignored_wcast_qual to a few more places where it was needed. v8: * Added __rte_diagnostic_ignored_wcast_qual to a few more places where it was needed. v7: * Added __rte_diagnostic_ignored_wcast_qual to a few more places where it was needed. v6: * Added __rte_diagnostic_ignored_wcast_qual to a few more places where it was needed. v5: * Added __rte_diagnostic_ignored_wcast_qual to a few more places where it was needed. v4: * Added __rte_diagnostic_ignored_wcast_qual to a few more places where it was needed. v3: * Added __rte_diagnostic_ignored_wcast_qual to a few more places where it was needed. v2: * Removed __rte_diagnostic_ignored_wstrict_aliasing (introduced in v1). * Removed the pragmas from many files where they were not needed. * In the files where the pragmas were indeed needed, reduced the scope during which they are active, reducing the chance that unforeseen issues are hidden due to warning suppression. Andre Muezerie (3): eal: add diagnostics macros to make code portable drivers/common: add diagnostics macros to make code portable drivers/net: add diagnostics macros to make code portable drivers/common/idpf/idpf_common_rxtx_avx512.c | 77 ++++++++--------- drivers/net/axgbe/axgbe_rxtx.h | 9 -- drivers/net/cpfl/cpfl_rxtx_vec_common.h | 4 - drivers/net/dpaa2/dpaa2_rxtx.c | 15 +--- drivers/net/fm10k/fm10k_rxtx_vec.c | 20 ++--- drivers/net/hns3/hns3_rxtx_vec_neon.h | 6 +- .../net/i40e/i40e_recycle_mbufs_vec_common.c | 2 - drivers/net/i40e/i40e_rxtx_common_avx.h | 24 +++--- drivers/net/i40e/i40e_rxtx_vec_altivec.c | 23 ++--- drivers/net/i40e/i40e_rxtx_vec_avx2.c | 40 +++++---- drivers/net/i40e/i40e_rxtx_vec_avx512.c | 30 ++++--- drivers/net/i40e/i40e_rxtx_vec_common.h | 4 - drivers/net/i40e/i40e_rxtx_vec_neon.c | 39 ++++----- drivers/net/i40e/i40e_rxtx_vec_sse.c | 32 +++---- drivers/net/iavf/iavf_rxtx_vec_avx2.c | 84 ++++++++++--------- drivers/net/iavf/iavf_rxtx_vec_avx512.c | 78 ++++++++--------- drivers/net/iavf/iavf_rxtx_vec_common.h | 12 ++- drivers/net/iavf/iavf_rxtx_vec_neon.c | 26 +++--- drivers/net/iavf/iavf_rxtx_vec_sse.c | 52 ++++++------ drivers/net/ice/ice_rxtx_common_avx.h | 24 +++--- drivers/net/ice/ice_rxtx_vec_avx2.c | 74 ++++++++-------- drivers/net/ice/ice_rxtx_vec_avx512.c | 64 ++++++-------- drivers/net/ice/ice_rxtx_vec_common.h | 4 - drivers/net/ice/ice_rxtx_vec_sse.c | 28 +++---- drivers/net/idpf/idpf_rxtx_vec_common.h | 4 - .../ixgbe/ixgbe_recycle_mbufs_vec_common.c | 2 - drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 18 ++-- drivers/net/ixgbe/ixgbe_rxtx_vec_sse.c | 20 ++--- drivers/net/mlx5/mlx5_flow.c | 5 +- drivers/net/mlx5/mlx5_rxtx_vec_altivec.h | 5 -- drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 18 ++-- drivers/net/mlx5/mlx5_rxtx_vec_sse.h | 71 +++++++++------- drivers/net/ngbe/ngbe_rxtx_vec_neon.c | 8 +- drivers/net/tap/tap_flow.c | 6 +- drivers/net/txgbe/txgbe_rxtx_vec_neon.c | 8 +- drivers/net/virtio/virtio_rxtx_simple.c | 4 - lib/eal/include/rte_common.h | 29 +++++++ 37 files changed, 466 insertions(+), 503 deletions(-) -- 2.47.2.vfs.0.0