potential simple loop optimization assistance strategy?
Gabriel Dos Reis
gdr@integrable-solutions.net
Fri Jul 1 16:24:00 GMT 2005
Paul Schlie <schlie@comcast.net> writes:
| 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;
I would not predicate the transformation on that assumption
(negligible cost of assertion). That could happen in an inner tight
loop.
What we need is a balance that does not require too much of work from
the compiler -- because otherwise, it won't happen.
-- Gaby
More information about the Gcc
mailing list