ISO Fortran disallows DATA statements from affecting the same bit of memory more than once; however, all (but one) other compilers allow this usage. They differ, however, in the case of multiple distinct initializations -- some compilers take the "last" value in source order, some don't. This patch accepts multiple identical DATA initializations, which is portable usage that appears in code, and emits an optional warning. It continues to detect and report multiple distinct DATA initializations, since they are not portable.
13 lines
393 B
Fortran
13 lines
393 B
Fortran
! RUN: %python %S/test_errors.py %s %flang_fc1
|
|
module m
|
|
contains
|
|
subroutine s1
|
|
!ERROR: DATA statement initializations affect 'jb(5_8)' more than once, distinctly
|
|
integer :: ja(10), jb(10)
|
|
data (ja(k),k=1,9,2) / 5*1 / ! ok
|
|
data (ja(k),k=10,2,-2) / 5*2 / ! ok
|
|
data (jb(k),k=1,9,2) / 5*1 / ! ok
|
|
data (jb(k),k=2,10,3) / 3*2 / ! conflict at 5
|
|
end subroutine
|
|
end module
|