-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Closed
Labels
Description
Test volatile8.f90 from gfrotran's regression test suite should fail with a frontend error instead of a todo message. The test checks that the source gives a compilation error, so we happen to pass this test because of the volatile NYI error message, but when we enable volatile #132486 this test will fail.
# current upstream
> flang -O2 ../Fortran/gfortran/regression/volatile8.f90 -c
error: loc("build/../Fortran/gfortran/regression/volatile8.f90":21:5): flang/lib/Lower/CallInterface.cpp:1115: not yet implemented: VOLATILE in procedure interface
LLVM ERROR: aborting
# with support for lowering of volatile variables
> flang -O2 ../Fortran/gfortran/regression/volatile8.f90 -c
> gfortran -O2 ../Fortran/gfortran/regression/volatile8.f90 -c
../Fortran/gfortran/regression/volatile8.f90:21:15:
21 | call sub8 (a(1:5:2)) ! { dg-error "Array-section actual argument" }
| 1
Error: Array-section actual argument at (1) is incompatible with the non-assumed-shape dummy argument ‘dummy8’ due to VOLATILE attribute
../Fortran/gfortran/regression/volatile8.f90:37:15:
37 | call sub9 (s9dummy) ! { dg-error "Assumed-shape actual argument" }
| 1
Error: Assumed-shape actual argument at (1) is incompatible with the non-assumed-shape dummy argument ‘dummy9’ due to VOLATILE attribute
../Fortran/gfortran/regression/volatile8.f90:55:16:
55 | call sub10 (a) ! { dg-error "Pointer-array actual argument" }
| 1
Error: Pointer-array actual argument at (1) requires an assumed-shape or pointer-array dummy argument ‘dummy10’ due to VOLATILE attribute
test case
subroutine s8()
implicit none
interface
subroutine sub8(dummy8)
integer, volatile, dimension(3) :: dummy8
end subroutine sub8
subroutine sub8a(dummy8a)
integer, volatile, dimension(:) :: dummy8a
end subroutine sub8a
end interface
integer, dimension(8) :: a
call sub8 (a(1:5:2)) ! { dg-error "Array-section actual argument" }
call sub8a(a(1:5:2))
end subroutine s8
subroutine s9(s9dummy)
implicit none
integer, dimension(:) :: s9dummy
interface
subroutine sub9(dummy9)
integer, volatile, dimension(3) :: dummy9
end subroutine sub9
subroutine sub9a(dummy9a)
integer, volatile, dimension(:) :: dummy9a
end subroutine sub9a
end interface
integer, dimension(9) :: a
call sub9 (s9dummy) ! { dg-error "Assumed-shape actual argument" }
call sub9a(s9dummy)
end subroutine s9
subroutine s10()
implicit none
interface
subroutine sub10(dummy10)
integer, volatile, dimension(3) :: dummy10
end subroutine sub10
subroutine sub10a(dummy10a)
integer, volatile, dimension(:) :: dummy10a
end subroutine sub10a
subroutine sub10b(dummy10b)
integer, volatile, dimension(:), pointer :: dummy10b
end subroutine sub10b
end interface
integer, dimension(:), pointer :: a
call sub10 (a) ! { dg-error "Pointer-array actual argument" }
call sub10a(a)
call sub10b(a)
end subroutine s10