On Jun 15, 2012, at 1:11 PM, Eric Botcazou wrote:
> Why would HOST_WIDE_INT be obsolete?

For the same reason that we don't use HOST_NARROW_INT instead of int.  In 
practice, int is portable enough for us now.  In reality, long long is portable 
for us now.  20 years ago, it wasn't portable enough.  Times change.  What's 
changed?  We'll we now have a language standard for long long, other 
implementors have had a chance to implement that standard, systems have had a 
chance to update and provide implementations of that standard and systems that 
don't support have died from hardware failure or have been scraped because they 
consume too much electricity to be useful anymore.

This situation is more like prototypes than patch reviews.  See patch reviews 
are useful for catching code bugs, HOST_WIDE_INT is not as useful as catching 
code bugs.  Prototypes used to be new fangled things that very few compiler 
had.  One could not portably use them.  Guess what, times change, compilers 
implement them, language standards adopt them, and system vendors provide 
implementations that support them.  The systems that never supported them go 
away, the people that know of a world in which compilers that don't support 
prototypes die.

We allow portability hacks into the source base for important system 
(implementations) were we don't want to just nix a platform wholesale.  See 
things like:

          /* This was a conditional expression but it triggered a bug           
                          
             in Sun C 5.5.  */

in the source base.  We do this, not for some theoretic beauty but for very 
practical and pragmatic reasons.  In time, even the above can be safely 
removed.  We have already removed support for prototypes (not being supported), 
and yet, we still have patch reviews.

So, to be practical, let us list the systems, platforms and implementations we 
are thinking of nixing, if we require long long to support at least 64-bit 
math.  Let me start:, ok, I'm done, now it is your turn.  I'm fine for avoiding 
long long, if there is a system people want to support that needs it, I am 
merely ignorant of such a system.

> That's a nice way to abstract the host

Yes, but why abstract the host?  HOST_NARROW_INT is a nice way to abstract the 
host as well, that is a necessary but not sufficient reason.  We do it to 
support an actual, real system, platform or implementation that fails to 
provide long long.  When there are no longer any such systems, then the time is 
right to switch to the standard.  Now, why do we do this, because we prefer 
standards to aide in readability and portability.  A person new to gcc, but 
knows C or C++ knows what long long is.  HOST_WIDE_INT, well, they have to take 
a mental hit on and figure it out, if they care.

Reply via email to