potential simple loop optimization assistance strategy?
Devang Patel
dpatel@apple.com
Fri Jul 1 16:27:00 GMT 2005
On Jul 1, 2005, at 8:51 AM, Paul Schlie wrote:
> As in general it seems that as the compiler knows what it needs to
> know to
> enable ideal loop optimization, why not simply have it assert: if
> it knew x,
> then it could do y? For example, if given something like:
>
> for (i = x; i < y; i++){ ... }
>
> Where it may not be known statically if x < y, or what (y - x) % N
> may be;
> therefore possibly difficult to ideally optimize. Where then
> instead of
> assuming something that may not be factual by default, it could
> generate a
> warning indicating that the loop may be further optimized if it
> knew that
> x < y, and/or (y - x) % N == 0. Where then the programmer could
> then choose
> to warrant it by preconditioning the loop:
>
> assert((x < y) && ((y - x) % 4)); // which could throw an exception.
>
> for ((i = x; i < y; i++){ ... }
>
> Where although it would require run-time code, it's overhead should be
> insignificant if the benefit of the optimization were truly
> significant;
> thereby enabling the programmer to help the compiler help himself,
> without
> the introducing potentially arbitrary behaviors, by explicitly
> trapping them
> instead.
>
> Where if the programmer didn't add an assertion, or explicitly
> enable a
> potentially unsafe optimization, then the compiler should not presume
> anything other than what it truly factually knows, which may include
> optimizations based on whether the target traps or wraps overflow,
> etc.
>
> (it may even be reasonable for the compiler to optionally insert
> run-time
> assertions automatically to enable the deterministic trapping of
> conditions
> which may be inconsistent with the optimizations assumptions?)
>
Various compilers support #pragma to inform compiler about approx.
number
of loop iterations.
-
Devang
More information about the Gcc
mailing list