From: Andy Green Date: Thu, 17 May 2018 13:50:37 +0000 (+0800) Subject: eal: explicit cast in constant byte swap X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=c7bf8093820b0d740e15f166c3fceb1edb2b2a83;p=dpdk.git eal: explicit cast in constant byte swap GCC 8.1 warns: rte_byteorder.h: In function 'rte_constant_bswap16': rte_byteorder.h:54:45: warning: conversion from 'int' to 'uint16_t' {aka 'short unsigned int'} may change value [-Wconversion] ((((uint16_t)(v) & UINT16_C(0x00ff)) << 8) | \ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~ (((uint16_t)(v) & UINT16_C(0xff00)) >> 8)) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ rte_byteorder.h:126:9: note: in expansion of macro 'RTE_STATIC_BSWAP16' return RTE_STATIC_BSWAP16(x); ^~~~~~~~~~~~~~~~~~ The other two sizes are going to be afflicted the same, so get the same fix. Fixes: b75667ef9f7e ("eal: add static endianness conversion macros") Cc: stable@dpdk.org Signed-off-by: Andy Green --- diff --git a/lib/librte_eal/common/include/generic/rte_byteorder.h b/lib/librte_eal/common/include/generic/rte_byteorder.h index 9bed85cca1..7d9a1463c4 100644 --- a/lib/librte_eal/common/include/generic/rte_byteorder.h +++ b/lib/librte_eal/common/include/generic/rte_byteorder.h @@ -123,7 +123,7 @@ typedef uint64_t rte_le64_t; /**< 64-bit little-endian value. */ static inline uint16_t rte_constant_bswap16(uint16_t x) { - return RTE_STATIC_BSWAP16(x); + return (uint16_t)RTE_STATIC_BSWAP16(x); } /* @@ -135,7 +135,7 @@ rte_constant_bswap16(uint16_t x) static inline uint32_t rte_constant_bswap32(uint32_t x) { - return RTE_STATIC_BSWAP32(x); + return (uint32_t)RTE_STATIC_BSWAP32(x); } /* @@ -147,7 +147,7 @@ rte_constant_bswap32(uint32_t x) static inline uint64_t rte_constant_bswap64(uint64_t x) { - return RTE_STATIC_BSWAP64(x); + return (uint64_t)RTE_STATIC_BSWAP64(x); }