76 lines
1.6 KiB
Fortran
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
|