A hurokfelosztás egy olyan fordítóoptimalizálás , amely megpróbálja leegyszerűsíteni a hurkot , vagy megszüntetni a hurokban lévő függőségeket azáltal, hogy több részre osztja fel, amelyeknek ugyanaz a forráshurok törzse és különböző számlálótartományai.
Például a következő kód:
int p = 10 ; for ( int i = 0 ; i < 10 ; ++ i ) { y [ i ] = x [ i ] + x [ p ]; p = i ; }az optimalizálás eredményeként a következőre konvertálódik:
y [ 0 ] = x [ 0 ] + x [ 10 ]; for ( int i = 1 ; i < 10 ; ++ i ) { y [ i ] = x [ i ] + x [ i -1 ]; }
Az új kód ekvivalens az előzővel, de szükségtelenné teszi a "p" változót a ciklustörzsben.
Ez az optimalizálás először a GCC 3.4-es verziójában jelent meg.