On 02/26/2016 09:28 PM, Bradley Lucier wrote:
Perhaps this question is appropriate for the gcc mail list.
Converting a float/double to unsigned int is undefined if the result would be
negative when converted to a signed int.
x86-64 and arm treat this condition differently---x86-64 returns a value whose
bit pattern is the same as the bit pattern for converting to signed int, and
arm returns zero. So it would be nice to have a warning that this will (or
could) happen.
I couldn't find such a warning in the GCC manual or in the GCC code base.
prog.cc:4:23: warning: overflow in implicit constant conversion [-Woverflow]
unsigned int z = -2.0;
^~~
prog.cc:5:12: warning: conversion to 'unsigned int' from 'double' may alter its
value [-Wfloat-conversion]
return x;
^
Both warnings exist since quite a long time (10 years?), the latter under the
more general -Wconversion:
https://gcc.gnu.org/wiki/NewWconversion#Frequently_Asked_Questions
Cheers,
Manuel.