https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116945

philippe.waroquiers at skynet dot be changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |philippe.waroquiers@skynet.
                   |                            |be

--- Comment #10 from philippe.waroquiers at skynet dot be ---
(In reply to Mark Wielaard from comment #8)
> (In reply to Eric Botcazou from comment #7)
> > > Sure. But I assume the unitialized part isn't accessed when resolving the
> > > 'Valid attribute. Does checking for the 'Valid attribute depend on any
> > > uninitialized bits?
> > 
> > Testing 'Valid means comparing the value with the allowed range, so how can
> > you do that without accessing that value?
> 
> I don't know, my Ada foo isn't very strong. How is the allowed range
> defined? How do you test for it? Doesn't that mean the value needs to be
> defined at least for that range check? If not, is the 'Valid attribute check
> non-deterministic because you cannot rely on the value being or not being in
> the allowed range?

The allowed range is defined as part of the type or subtype definition.

For example, you can declare a new type such as:
  type Month is new Integer range 1 .. 12;

The 'Valid attribute will then check that the variable is in the range.

It is for sure a little bit special to use 'Valid with non initialized values.
(a more classical usage is to check that some binary value read from a file or
network
or ... is in the allowed range).

Reply via email to