On 07/27/2009 12:25 PM, Robert Dewar wrote:
Laurent GUERBY wrote:

if Dynamic_N >= T'First and Dynamic_N > T'Last then
Huh? I can't understand the first comparison.
Actually Ada is not Fortran-66 and allows empty loops, no?

Ada for loop over "A .. B" will be empty if "A > B" and we obviously
must not raise an exception if the loop is empty hence the first
comparison is equivalent to "not (T'First > Dynamic_N)" which is true
when the loop is not empty.

GNAT does not do this kind of hoisting, though this particular case
could be fiddled in the front end.

I suppose though that in Ada Dynamic_N will often be a subtype of T, at which point the hoisting is pointless because you know that the check passes.

Paolo

Reply via email to