Skip to content

[flang] Flang should reject bad volatile dummy arguments from gfortran volatile8 test #137369

@ashermancinelli

Description

@ashermancinelli

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 

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions