Content deleted Content added
rewrote first sentence |
m remove “/”; minor reword |
||
Line 1:
{{Unreferenced|date=May 2007}}
In [[computer programming]], '''loop-invariant code''' consists of statements (in an [[imperative programming|imperative]] [[programming language]]) which can be moved outside the body of a loop without affecting the semantics of the program. As a result it is executed less often, providing a speedup. Another effect of this transformation is allowing constants to
'''Loop-invariant code motion''' (also called '''hoisting''' or '''scalar promotion''') is a [[compiler optimization]] which performs this movement automatically. However, if too many variables are created, there will be high [[register pressure]], especially on processors with few registers, like the 32-bit [[x86]]. If the compiler runs out of registers, some variables will be [[register spilling|spilled]]. To counteract this, the “opposite” optimization can be performed, [[rematerialization]].
|