Issue 164303
Summary Flang does not look for locally scoped interfaces before module level interfaces with the same name
Labels flang
Assignees
Reporter tarunprabhu
    The code below compiles with `gfortran`, but fails to compile with `flang`.

```fortran
module foo_mod
  use, intrinsic :: iso_fortran_env
 use, intrinsic :: iso_c_binding
  implicit none

  interface new_foo
 procedure :: foo_ctor
  end interface

contains

function foo_ctor(options) result(retval)
  implicit none
  integer, intent(in) :: options
  integer :: retval

  interface
    subroutine new_foo(f, opt) bind(c, name='new_foo')
      import
      implicit none
      integer, intent(inout) :: f
      integer(c_int), intent(in) :: opt
    end subroutine
  end interface

  call new_foo(retval, options)
end function

end module
```

With `flang`, the error that is raised is:

```
error: Cannot call function 'new_foo' like a subroutine
    call new_foo(retval, options)
         ^^^^^^^
foo.f90:14:13: Declaration of 'new_foo'
    interface new_foo
              ^^^^^^^
```

This code is derived from an application used within our organization. A more complete reproducer (containing a main function, the C++ codefor `new_foo` and a cmake script  is attached). 

[flang_interface_scope_reproducer.tar.gz](https://github.com/user-attachments/files/23007306/flang_interface_scope_reproducer.tar.gz)

MD5 for attachment: 6931ab65231672d1bc51ce39095243ae
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to