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

Reply via email to