http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52443
--- Comment #4 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-03-01
10:23:34 UTC ---
Err ...
/* Allow conversions pointer type to integral type only if
there is no sign or zero extension involved.
For targets were the precision of ptrofftype doesn't match that
of pointers we need to allow arbitrary conversions to ptrofftype.
*/
if ((POINTER_TYPE_P (lhs_type)
&& INTEGRAL_TYPE_P (rhs1_type))
|| (POINTER_TYPE_P (rhs1_type)
&& INTEGRAL_TYPE_P (lhs_type)
&& (TYPE_PRECISION (rhs1_type) >= TYPE_PRECISION (lhs_type)
|| ptrofftype_p (sizetype))))
return false;
tricky business ;)