Index: flang/lib/Semantics/resolve-names.cpp =================================================================== --- flang/lib/Semantics/resolve-names.cpp +++ flang/lib/Semantics/resolve-names.cpp @@ -3644,6 +3644,7 @@ currScope().erase(symbol->name()); newDetails.set_result(*currScope().CopySymbol(details.result())); } + newSymbol.attrs() |= symbol->attrs(); } return true; } Index: flang/test/Semantics/separate-mp02.f90 =================================================================== --- flang/test/Semantics/separate-mp02.f90 +++ flang/test/Semantics/separate-mp02.f90 @@ -298,3 +298,16 @@ real :: x end end + +module m8 + interface + pure elemental module subroutine s1 + end subroutine + end interface +end module +submodule(m8) sm8 + contains + !Ensure no spurious error about mismatching attributes + module procedure s1 + end procedure +end submodule