mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-26 07:34:14 +00:00
another random note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47831 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
150943c178
commit
53b7277917
@ -705,3 +705,26 @@ int f() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//===---------------------------------------------------------------------===//
|
//===---------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
The loop unroller should partially unroll loops (instead of peeling them)
|
||||||
|
when code growth isn't too bad and when an unroll count allows simplification
|
||||||
|
of some code within the loop. One trivial example is:
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
int main() {
|
||||||
|
int nRet = 17;
|
||||||
|
int nLoop;
|
||||||
|
for ( nLoop = 0; nLoop < 1000; nLoop++ ) {
|
||||||
|
if ( nLoop & 1 )
|
||||||
|
nRet += 2;
|
||||||
|
else
|
||||||
|
nRet -= 1;
|
||||||
|
}
|
||||||
|
return nRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
Unrolling by 2 would eliminate the '&1' in both copies, leading to a net
|
||||||
|
reduction in code size. The resultant code would then also be suitable for
|
||||||
|
exit value computation.
|
||||||
|
|
||||||
|
//===---------------------------------------------------------------------===//
|
||||||
|
Loading…
x
Reference in New Issue
Block a user