This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Ada subtypes and base types (was: Bootstrap failure on trunk: x86_64-linux-gnu)
- From: Laurent GUERBY <laurent at guerby dot net>
- To: Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>
- Cc: Jeffrey A Law <law at redhat dot com>, ebotcazou at adacore dot com, gcc at gcc dot gnu dot org
- Date: Sun, 19 Feb 2006 20:43:28 +0100
- Subject: Ada subtypes and base types (was: Bootstrap failure on trunk: x86_64-linux-gnu)
- References: <10602191923.AA28521@vlsi1.ultra.nyu.edu>
On Sun, 2006-02-19 at 14:23 -0500, Richard Kenner wrote:
> "Second, for a given integer type (such as
> natural___XDLU_0_2147483647), the type for the nodes in TYPE_MIN_VALUE
> and TYPE_MAX_VALUE really should be a natural___XDLU_0_2147483647.
> ie, the type of an integer constant should be the same as the type of
> its min/max values."
>
> No, the type of the bounds of a subtype should be the *base type*. That's
> how the tree has always looked, as far back as I can remember.
This is because intermediate computations can produce results
outside the subtype range but within the base type range (RM 3.5(6)),
right?
type T1 is range 0 .. 127;
-- Compiler will choose some type for T'Base, likely to be -128..127
-- but could be Integer (implementation dependant)
subtype T is T1 range 0 .. 100;
R : T := 100+X-X;
-- guaranteed work as long 100+X<=T'Base'Last and 100-X>=T'Base'First
Laurent