Both rte_lpm.c and rte_lpm6.c are using >> operator on a negative integer.
According to the C standard the result of that is implementation defined (ie
not portable).
Reported by PVS studio as warning:
https://pvs-studio.com/en/docs/warnings/v610/
static uint32_t __rte_pure
depth_to_mask(uint8_t depth)
{
VERIFY_DEPTH(depth);
/* To calculate a mask start with a 1 on the left hand side and right
* shift while populating the left hand side with 1's
*/
return (int)0x80000000 >> (depth - 1);
}
and
static uint8_t __rte_pure
depth_to_mask_1b(uint8_t depth)
{
/* To calculate a mask start with a 1 on the left hand side and right
* shift while populating the left hand side with 1's
*/
return (signed char)0x80 >> (depth - 1);
}