finalyze moving
This commit is contained in:
88
tests/sapfor/loops_combiner/test_5.for
Normal file
88
tests/sapfor/loops_combiner/test_5.for
Normal file
@@ -0,0 +1,88 @@
|
||||
program loops_combiner_test
|
||||
implicit none
|
||||
|
||||
integer :: t1, t2
|
||||
integer :: i, j, i1, j1, k
|
||||
real :: mas(10, 20)
|
||||
|
||||
|
||||
! должны быть объединены с разворотом первого гнезда:
|
||||
do i = 1, 10
|
||||
do j = 1, 20, 1
|
||||
mas(i, j) = i + j
|
||||
enddo
|
||||
enddo
|
||||
do i = 10, 1, -1
|
||||
do j = 20, 1, -1
|
||||
mas(i, j) = mas(i, j) + i * j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! для разделения циклов:
|
||||
k = 0
|
||||
|
||||
! переменная i1 должна быть инициализирована перед объединённым циклом
|
||||
! переменная j1 - после, т.к. используется в первом цикле:
|
||||
do i = 1, 10
|
||||
do j = 1, 20
|
||||
j1 = i + j
|
||||
mas(i, j) = j1
|
||||
enddo
|
||||
enddo
|
||||
do i1 = 1, 10
|
||||
do j1 = 1, 20
|
||||
mas(i1, j1) = mas(i1, j1) + i1 * j1
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! для разделения циклов:
|
||||
k = 0
|
||||
|
||||
! переменная i во втором цикле наследует значение от первого,
|
||||
! должны быть заменена на соответствующее выражение:
|
||||
do i = 1, 10
|
||||
do j = 1, 20
|
||||
mas(i, j) = i + j
|
||||
enddo
|
||||
enddo
|
||||
do i1 = 1, 10
|
||||
do j1 = 1, 20
|
||||
mas(i1, j1) = mas(i1, j1) + i1 * j1 - i
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! для разделения циклов:
|
||||
k = 0
|
||||
|
||||
! переменная i во втором цикле наследует значение от первого,
|
||||
! должны быть переименована и проинициализирована:
|
||||
do i = 1, 10
|
||||
do j = 1, 20
|
||||
mas(i, j) = i + j
|
||||
enddo
|
||||
enddo
|
||||
do i1 = 1, 10
|
||||
do j1 = 1, 20
|
||||
k = k + i
|
||||
i = j1 / i1
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! для разделения циклов:
|
||||
k = 0
|
||||
|
||||
! циклы нельзя объединить из-за неприватной для обоих переменной t2:
|
||||
t2 = 0
|
||||
do i = 1, 10
|
||||
do j = 1, 20, 1
|
||||
t2 = t2 + i * j
|
||||
enddo
|
||||
enddo
|
||||
do i = 1, 10
|
||||
do j = 1, 20
|
||||
t1 = i + j - t2
|
||||
enddo
|
||||
enddo
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user