This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: pointer <-> integer conversion warnings (bogus -Wall warnings)
- From: Tim Hollebeek <tim at hollebeek dot com>
- To: Tom Lord <lord at emf dot net>
- Cc: gcc at gcc dot gnu dot org, dewar at gnat dot com, rth at redhat dot com
- Date: Wed, 13 Mar 2002 17:49:16 -0500
- Subject: Re: pointer <-> integer conversion warnings (bogus -Wall warnings)
- References: <20020313000641.72845F2DD2@nile.gnat.com> <200203131212.EAA27998@morrowfield.home> <200203132159.NAA27786@emf.net>
- Reply-to: tim at hollebeek dot com
> The code in question, once again, has an explicit cast:
>
> x = (int)p;
>
> I am assured by the flow through my program that the value stored in
> `p' was first cast from an integer and that it's range is sufficiently
> constrained that it won't cause a problem on any even vaguely sane
> architecture. I added the cast to the code precisely to eliminate
> the warnings and to signal that there's a possible value truncation
> here that can't be disproven by the compiler -- but I want that
> well-defined conversion anyway.
>
> There is no integer type guaranteed to be wide enough to hold values
> from pointers. So unlike the first warning I asked about, I don't see
> any reasonable "double cast" that solves the problem.
Why not:
x = (int)(intptr_t)p;
?
-Tim