diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp --- a/flang/lib/Semantics/resolve-names.cpp +++ b/flang/lib/Semantics/resolve-names.cpp @@ -6495,7 +6495,9 @@ if (!SetProcFlag(name, *symbol, flag)) { return; // reported error } - CheckImplicitNoneExternal(name.source, *symbol); + if (!symbol->has()) { + CheckImplicitNoneExternal(name.source, *symbol); + } if (symbol->has() && symbol->attrs().test(Attr::ABSTRACT)) { Say(name, "Abstract interface '%s' may not be called"_err_en_US); diff --git a/flang/test/Semantics/implicit12.f90 b/flang/test/Semantics/implicit12.f90 new file mode 100644 --- /dev/null +++ b/flang/test/Semantics/implicit12.f90 @@ -0,0 +1,8 @@ +! RUN: %python %S/test_errors.py %s %flang_fc1 +use iso_c_binding, only: c_ptr, c_associated +implicit none(external) +type (c_ptr) :: cptr +if (.not. c_associated (cptr)) then + return +end if +end