From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sclab-apps-2.localdomain (sc-fw1.tilera.com [12.218.212.162]) by dpdk.org (Postfix) with ESMTP id 24753C8FC for ; Fri, 19 Jun 2015 19:35:04 +0200 (CEST) X-CheckPoint: {558452C7-9-A3D4DA0C-C0000002} Received: by sclab-apps-2.localdomain (Postfix, from userid 1318) id 14FA4220442; Fri, 19 Jun 2015 10:35:03 -0700 (PDT) From: Cyril Chemparathy To: dev@dpdk.org Date: Fri, 19 Jun 2015 10:34:47 -0700 Message-Id: <1434735293-15469-5-git-send-email-cchemparathy@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1434735293-15469-1-git-send-email-cchemparathy@ezchip.com> References: <1434735293-15469-1-git-send-email-cchemparathy@ezchip.com> Subject: [dpdk-dev] [PATCH v2 04/10] hash: silence -Wcast-align on pointer arithmetic X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Jun 2015 17:35:14 -0000 Since sig_tbl_bucket_size and key_tbl_key_size are explicitly aligned at initialization, offset dereferences in the hash table code cannot possibly be unaligned. However, the compiler is unaware of this fact and complains on -Wcast-align. This patch modifies the code to use RTE_PTR_ADD(), thereby silencing the compiler by casting through (void *). Acked-by: Olivier Matz Signed-off-by: Cyril Chemparathy --- lib/librte_hash/rte_hash.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/librte_hash/rte_hash.c b/lib/librte_hash/rte_hash.c index 9245716..67dff5b 100644 --- a/lib/librte_hash/rte_hash.c +++ b/lib/librte_hash/rte_hash.c @@ -96,23 +96,23 @@ EAL_REGISTER_TAILQ(rte_hash_tailq) static inline hash_sig_t * get_sig_tbl_bucket(const struct rte_hash *h, uint32_t bucket_index) { - return (hash_sig_t *) - &(h->sig_tbl[bucket_index * h->sig_tbl_bucket_size]); + return RTE_PTR_ADD(h->sig_tbl, (bucket_index * + h->sig_tbl_bucket_size)); } /* Returns a pointer to the first key in specified bucket. */ static inline uint8_t * get_key_tbl_bucket(const struct rte_hash *h, uint32_t bucket_index) { - return (uint8_t *) &(h->key_tbl[bucket_index * h->bucket_entries * - h->key_tbl_key_size]); + return RTE_PTR_ADD(h->key_tbl, (bucket_index * h->bucket_entries * + h->key_tbl_key_size)); } /* Returns a pointer to a key at a specific position in a specified bucket. */ static inline void * get_key_from_bucket(const struct rte_hash *h, uint8_t *bkt, uint32_t pos) { - return (void *) &bkt[pos * h->key_tbl_key_size]; + return RTE_PTR_ADD(bkt, pos * h->key_tbl_key_size); } /* Does integer division with rounding-up of result. */ -- 2.1.2