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.