"Richard Guenther" <[EMAIL PROTECTED]> wrote on 02.06.2008 
10:28:12:

> On Mon, Jun 2, 2008 at 5:59 AM, Ian Lance Taylor <[EMAIL PROTECTED]> 
wrote:
> > Andrew Haley <[EMAIL PROTECTED]> writes:
> >
> >> Ian Lance Taylor wrote:
> >>> Andrew Haley <[EMAIL PROTECTED]> writes:
> >>>
> >>>> Richard Guenther wrote:
> >>>>> On Fri, May 30, 2008 at 10:57 AM, Kai Tietz <Kai.
> [EMAIL PROTECTED]> wrote:
> >>>>>> Hi,
> >>>>>>
> >>>>>> as I noticed, most hash value calculations are trying to use 
pointer
> >>>>>> values for building the value and assume that a long/unsigned
> long scalar
> >>>>>> is wide enough for a pointer. This is at least for w64 target
> not true. So
> >>>>>> I want to know, if it would be good to introduce an gcc 
> specific type for
> >>>>>> those kind of casts, or to use ssize_t/size_t.?
> >>>>> it's uintptr_t which should be used, if only as an intermediate 
cast -
> >>>>> (unsigned long)(uintptr_t)ptr.
> >>>> That's not possible because, IIRC, gcc must compile on C90 systems.
> >>>
> >>> We can just test for it with autoconf and typedef it if we don't 
have
> >>> it.  We can figure out what to typedef it to by comparing the sizeof
> >>> void* to the sizeof the integer types--we already gather these sizes
> >>> in the configure script anyhow, and use them in hwint.h.
> >>
> >> Given that all this seems to be about is avoiding warning messages on
> >> some extremely unlikely architectures on which gcc may not run, I 
have
> >> to question the sens of such heavyweight measures.  Why not simply 
use
> >> size_t?  It would be adequate on every architecture anyone here knows
> >> about.
> >
> > I don't personally find these measures to be heavyweight.  I find them
> > to be fairly routine for the kind of portability we aim for.  Only one
> > person has to get them right once.
> >
> > But I'm fine with using size_t also, if it does the right thing on
> > W64.
> 
> If size_t is fine then long is also fine if W64 is compatible with C90
> (guess what - it is not).  So I'd rather go the full lenghth of using
> C99 uintptr_t which is what even W64 would be compatible with (C99, that 
is).
> 
> Richard.
> 

w64 is compatible to C90, because we use a trick to generate a compatible 
declaration for size_t in C90 mode. We declare it via __attribute__ ((mode 
(DI))). So size_t would be fine fow w64, too (at least for mingw-w64).

  Kai

|  (\_/)  This is Bunny. Copy and paste Bunny
| (='.'=) into your signature to help him gain
| (")_(") world domination.

Reply via email to