Files
clang-p2996/flang/test/Semantics/bind-c01.f90
Peter Klausler 72904a990c [flang] Avoid global name conflict when BIND(C,NAME=) is used
At the top level of program units in a source file, two subprograms
are allowed to have the same name if at least one of them has a
distinct interoperable binding name.  F18's symbol table requires
(most) symbols in a scope to have distinct names, though.  Solve
by using compiler-created names for the symbols of global scope
subprograms that have interoperable binding names.

Differential Revision: https://reviews.llvm.org/D124295
2022-04-25 09:25:44 -07:00

32 lines
768 B
Fortran

! RUN: %python %S/test_errors.py %s %flang_fc1
! Check for multiple symbols being defined with with same BIND(C) name
module m1
integer, bind(c, name="x1") :: x1
!ERROR: Two symbols have the same BIND(C) name 'x1'
integer, bind(c, name=" x1 ") :: x2
contains
subroutine x3() bind(c, name="x3")
end subroutine
end module
!ERROR: Two symbols have the same BIND(C) name 'x3'
subroutine x4() bind(c, name=" x3 ")
end subroutine
! Ensure no error in this situation
module m2
interface
subroutine x5() bind(c, name=" x5 ")
end subroutine
end interface
end module
subroutine x5() bind(c, name=" x5 ")
end subroutine
! Ensure no error in this situation
subroutine foo() bind(c, name="x6")
end subroutine
subroutine foo() bind(c, name="x7")
end subroutine