Issue |
137369
|
Summary |
[flang] Flang should reject bad volatile dummy arguments from gfortran volatile8 test
|
Labels |
flang:frontend
|
Assignees |
|
Reporter |
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
```
<details><summary>test case</summary>
```
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
```
</details>
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs