> {
> int x;
>
> x = 0;
> for( i = 0; i < 5; i++ )
/* Цикл не должен генерироваться*/
> k5 = x + j5;
> }
/* Конец unnecessary_loop */
>
/* ---------------------------------------------------- *
¦ Функция: loop_jamming ¦
¦ Два цикла в этой функции имеют одинаковые ¦
¦ заголовки и могут быть слиты в один. ¦
* ---------------------------------------------------- */
>void loop_jamming( x )
> int x;
> {
> for( i = 0; i < 5; i++ )
> k5 = x + j5 * i;
> for( i = 0; i < 5; i++ )
> i5 = x * k5 * i;
> }
/* Конец loop_jamming */
>
/* ------------------------------------------------------ *
¦ Функция: loop_unrolling ¦
¦ Цикл в этой функции должен быть заменен ¦
¦ тремя присваиваниями с использованием ¦
¦ константной индексации массива или машинно- ¦
¦ зависимыми командами для инициализации ¦
¦ блока памяти. ¦
* ------------------------------------------------------ */
>void loop_unrolling( x )
> int x;
> {
> for( i = 0; i < 6; i++ )
> ivector4[ i ] = 0;
> }
/* Конец loop_unrolling */
>
/* ----------------------------------------------------- *
¦ Функция: jump_compression ¦
¦ Эта программа полезна для демонстрации ¦
¦ сжатия цепочки переходов. goto end_1 может ¦
¦ быть заменен на прямой переход на beg_1. ¦
* ----------------------------------------------------- */
>int jump_compression( i, j, k, l, m )
>int i, j, k, l, m;
> {
>beg_1:
> if( i < j )
> if( j < k )
> if( k < l )
> if( l < m )
> l += m;
> else
> goto end_1;
> else
> k += l;
> else {
> j += k;
>end_1:
> goto beg_1;
> }
> else
> i += j;
> return( i + j + k + l + m );
> }
/* Конец jump_compression */