Index: flang/lib/Semantics/check-declarations.cpp =================================================================== --- flang/lib/Semantics/check-declarations.cpp +++ flang/lib/Semantics/check-declarations.cpp @@ -1869,11 +1869,11 @@ } } -// Check that BIND(C) names are distinct and BIND(C) variable declared in module void CheckHelper::CheckBindC(const Symbol &symbol) { if (!symbol.attrs().test(Attr::BIND_C)) { return; } + CheckConflicting(symbol, Attr::BIND_C, Attr::PARAMETER); if (symbol.has() && !symbol.owner().IsModule()) { messages_.Say(symbol.name(), "A variable with BIND(C) attribute may only appear in the specification part of a module"_err_en_US); Index: flang/test/Semantics/declarations02.f90 =================================================================== --- /dev/null +++ flang/test/Semantics/declarations02.f90 @@ -0,0 +1,13 @@ +! RUN: %python %S/test_errors.py %s %flang_fc1 + +module m + + !ERROR: 'x1' may not have both the BIND(C) and PARAMETER attributes + integer, parameter, bind(c, name="a") :: x1 = 1 + !ERROR: 'x2' may not have both the BIND(C) and PARAMETER attributes + integer, bind(c), parameter :: x2 = 1 + !ERROR: 'x3' may not have both the BIND(C) and PARAMETER attributes + integer, parameter :: x3 = 1 + bind(c) :: x3 + +end