Files
SAPFOR/tests/sapfor/private_removing/test_cannot_remove.f
2025-03-25 21:09:12 +03:00

76 lines
1.6 KiB
Fortran

program test_cannot_remove
double precision :: y(10, 10), x(10, 10), a
integer :: n, m
n=10
m=15
! y cannot be removed - it is uninitialized
! (cannot find reaching definition)
!$SPF ANALYSIS(PRIVATE(y))
do i = 1, n
y(1, i) = 100
x(i, i) = y(2, i)
enddo
! y cannot be removed - more than one reaching definition
! reaches the statement
!$SPF ANALYSIS(PRIVATE(y))
do i = 1, n
if (i .eq. 1) then
y(1, i) = 100
else
y(1, i) = 200
endif
x(i, i) = y(1, i)
enddo
! y cannot be removed - y doesn't match any fixed dimensions mask
!$SPF ANALYSIS(PRIVATE(y))
do i = 1, n
do j = 1, m
y(1, i) = j * i
enddo
do j = 1, m
x(j, i) = y(j, i)
enddo
enddo
! y cannot be removed - y doesn't match any fixed dimensions mask
!$SPF ANALYSIS(PRIVATE(y))
do i = 1, n
do j = 1, m
y(1, i - 1) = j * i
enddo
do j = 1, m
x(j, i) = y(1, i)
enddo
enddo
! y cannot be removed - y doesn't match any fixed dimensions mask
!$SPF ANALYSIS(PRIVATE(y))
do i = 1, n
do j = 1, m
y(i, 1) = j * i
enddo
do j = 1, m
x(j, i) = y(1, i)
enddo
enddo
! y cannot be removed - y depends on non-invariant var 'a'
!$SPF ANALYSIS(PRIVATE(y))
do i = 1, n
do j = 1, m
a = 2 * i
y(j, i) = j * i + a
enddo
do j = 1, m
x(j, i) = y(j, i)
enddo
enddo
end