http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50294
--- Comment #4 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-09-06 08:31:56 UTC --- My idea with fixing the Ada issue would be to conditionally use a signed or unsigned (sizetype) domain type. Not sure if all of the middle-end copes well with ssizetype domains (but well, we should fix it then). Of course that wouldn't fix use of an even larger domain type such as Unsigned_128_T is mod 2 ** 128 and appropriate large constants. But I see several special-cases in the Gigi code that tries to handle overflow situations. Thus, I think we ideally should allow any kind of integer type in TYPE_DOMAIN, not just sizetype variants. But that's of course an even bigger change. Sidenote: my idea was to remove special-casings of TYPE_IS_SIZETYPE from folders but have a few special-cases explicit in size_binop so we know the definite context from which they are invoked (like from stor-layout). That's much better than to expose the special-casing from random optimization passes that happen to call into fold.