http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52443
--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-03-01 10:20:20 UTC --- Or rather /* 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 (rhs1_type) && INTEGRAL_TYPE_P (lhs_type) && (TYPE_PRECISION (rhs1_type) >= TYPE_PRECISION (lhs_type) || ptrofftype_p (sizetype))) return false; as restricting conversion from integral to pointers does not seem necessary (only pointers do not have a "sign").