<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">