Useless pointer-to-int-cast warning?
Vincent Lefevre
vincent+gcc@vinc17.org
Sat Aug 18 10:00:00 GMT 2018
On 2018-08-18 08:01:46 +0200, Marc Glisse wrote:
> I expect it is "bad" because it isn't clear if the value should be
> sign-extended or zero-extended when cast to a larger integer. But that
> doesn't really matter if you are only going to convert it back to a pointer,
> where the extra bits will disappear. It isn't obvious that it warrants a
> warning in -Wall (as opposed to -Wextra or something more specialized), but
> if you are trying to use the extra high bits to stuff some extra
> information, it may matter that they are not 0.
But the C standard says that the behavior is undefined if the result
cannot be represented in the integer type. Thus uintmax_t or intmax_t
is safer than a integer type of the same size of the pointer, in case
the pointer value as an integer would not be representable in this
type, but would be in uintmax_t or intmax_t. So, IMHO, this warning
is just bad.
--
Vincent Lefèvre <vincent@vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)
More information about the Gcc-help
mailing list