On Fri, Jul 24, 2009 at 06:25:12PM +0200, Laurent GUERBY wrote:
> On Fri, 2009-07-24 at 12:03 -0400, Robert Dewar wrote:
> > Indeed an alternative approach to handling this problem in GCC would
> > be to adapt the Ada model for C and C++ which would not be too hard
> > to do I suspect. Then gcc could be improved to handle this model
> > better and more effectively with respect to optimization, and both
> > C/C++ and Ada would benefit.
> 
> IIRC the Ada rules allows to raise Constraint_Error earlier
> rather than later which is interesting for check removal in loops for
> very common patterns:
> 
>    for I in T'First .. Dynamic_N loop
>       T (I) := 0.0; -- generate check I in T'First .. T'Last
>    end loop;
> 
> =>
> 
>    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? 

>       raise Constraint_Error;
>    end if;
>    for I in T'First .. Dynamic_N loop
>       T (I) := 0.0; -- no generated check
>    end loop; 
> 
> But I might be wrong in my recollection (and I don't think GNAT
> takes advantage of that), Robert?

I don't think so. And the code quality when checking for
overflows was abysmal last time I tried.

        Regards,
        Gabriel

Reply via email to