<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/137369>137369</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[flang] Flang should reject bad volatile dummy arguments from gfortran volatile8 test
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang:frontend
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ashermancinelli
</td>
</tr>
</table>
<pre>
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>
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0WFtv2zwS_TX0y8CGRFm2-OAHNbGAAtntoigK7CMljSXuUqQ-XhLk33-gLr4l8dcmaWCgLimeOTxzyNGYWysahbgj6ReS3i-4d602O25bNB1XlVAopViUun7e_UDr4FFL7oTEbHVgERyM7qA5GO0MV4RuLRhsDFortAIXnrdeOATbai9rOHAh4Um4FnhYqhyqGtAYbUAo65DXoA_AwelaQ4fW8gZX8KPFEatqsfq_BddyB65FsNqbCqERj2iBQ6W7XgR2Wo2ghN6B1fCE0PK-RwVOQ89tQBB2hCyx4t5iCBsQ593Bv__7dSI20QhYpXfw1KIKiKh4Kc8WEJrECV1nmzPwJyHlsOcVifLw2UTTJ8oJTaDyxqBy4HvrDPIuDCd7OEiuGlh-o7BaEVoU2ozqFs3h-PUkM6HFZU6WFYnycf9JDlJXhGaE0tILWRNavAeTUEqSnMYkyVNCWcAdSBJaSFESWjzoJzSEFndcyq_KoTnwCldV35Mkj-M4DSuUdvCMDkTXS-xQOazD8M9vD_mPrw97EAp6oyusvUEQMwiJ8oeHn_-C_ffv376H53mpjROqmSSlyWgo6_teGwcHbUAGNkI1IavHBD1yI0LK7CeqPEHNKz6I9q7MTGkZJB4ZAQCNgWzvIPxVXEqwvsyA0IwTmo1JTHIaEkkZkOHhL1A3y9HwhNLcGP68tFgNZ4lXznMJ3DQ-pI1QCmR7P0YCOEY6_cUkyvezAW9iAXcwcKIMhAWhwhnmToSjNaQ1HEql1ZJb6zusl7blPULtu-75BEL2lGQRYdkwns3_ZVB7DGf-aDHunBGld_h-tZPtC7WT7Qu1g6yZZQOfN0W-2NIHRb6F9SdEZn9U5DToG2_ORU7TFyLH0eTp1_X9jx4ukSUPBvx9fS8Fvgl2LrDBv7wwoR4puNRTG-gvUG4KHEe_pvBFTQnX0V2NjgtpSbInyZ31XcfNM0n2YwXlFklyR2hxmnhZmwCCvEZ7JxSCzYYCwiatwvUtKuGCY3AeO7utR_HO1_syIExn84gzr2twqNOzBcL3WnSoRmtkyZDeJA9JmCDm9eHl4TrOG_H5kQD_bQYh-DUHfovEPBmmrpU5i3ceIzuLMC__0zf3EZ-_jj88dr29DOYTeT7KLm67fzDKK9u_lHhG-jVvsTm17OPeYjfSyt6Kf_QW-xRvsVveYu_wFrvhrU-uU0dY_tIQ15thrzopjj582QwQ8x36YUvE0Y10nE1eT_ATiU-xRYC5RYS_yaQ8MSnfySSMTrXrilR5k1T5-259M-C1dT-v-p8Qp5uQvZgozyeudxqYvFaICS1OtXhR75KaJYwvcBdv1-kmijO2XbQ7nmzWGaNZQrdxtU638WFd1VFES4wP6wOjC7GjEU2jNU3jLV2n21XEOFtvoni9XbOI1QeyjrALXaaUj91Km2YhrPW4i5NtsmELyUuUdmjwKR3btiSfu-_Q2aX3C7MLa5elbyxZR1JYZ09oTjg5_EAwLk7voRh6p6mpN_g_rByUvD41W5evNnb-nWBqk46ve0ObvPBG7lrnejvkvgjvicK1vlxVugsdpnyc_1n2RodghBbDFi2hxbTLxx39OwAA__94uTEe">