On Jun 15, 2012, at 2:46 PM, Joseph S. Myers wrote:
> HOST_WIDE_INT is an abstraction about the *target*; the target determines 
> the required properties.  The salient properties include:
> 
> * At least as wide as target address space.

The first person to do a 128 bit address support isn't going to appreciate all 
the work they are going to have to do.  With some luck, before then, we will 
have switched to C++ and engineered in some prettier interfaces that will just 
work with no changes.  Today, it would be a major pain.

> * Constants for the target can be represented in at most two
> HOST_WIDE_INT.

This is nice in theory but no longer true for some of us.  :-(

> Even if "long long" has the required properties, use of a type name such 
> as target_int serves as documentation for the human reader about the 
> intent of an entity in GCC - that it is an integer or size existing in 
> some way on the target - and code needs to address the human reader, not 
> just the compiler compiling it.

It would be nice to have an interface for address constants that can survive 
migration to a 128 bit address machine.  It would be nice to have an interface 
for constants that are bigger than 2*HOST_WIDE_INT.  HOST_WIDE_INT provides 
neither.

Reply via email to