This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Disable old loop optimizer


> Zdenek Dvorak <rakdver at atrey dot karlin dot mff dot cuni dot cz>
>> 2) loop reversal (i.e. replacing "for (i = 0; i < n; i++) a[i]=i;" with
>>    "for (i = n - 1; i >= 0; i--) a[i]=i;", thus causing us to compare
>>    with zero instead of arbitrary bound, and possibly shorten the life
>>    range of n).  Should be trivial within linear-transform framework,
>>    the major problem is to decide when it is really useful. the major
>>    problem is to decide when it is really useful.

It should be considered to be universally useful: as comparing a value
against a constant 0 is never more expensive than comparing it against an
arbitrary constant, and most typically less expensive because a constant
value of 0 is typically both easier to generate if needed as a register
value, and/or directly in-lined into a comparison instruction as a small
constant when necessary; and/or enables architectures which save implied
logical or arithmetic result comparisons against zero in a cc-register,
to potentially avoid the necessary of an explicit comparison altogether.

(so it would seem to never be worse, and typically always better.)




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]