[flang-commits] [PATCH] D108932: [flang] Downgrade inappropriate error message to a warning
Peter Klausler via Phabricator via flang-commits
flang-commits at lists.llvm.org
Mon Aug 30 11:48:39 PDT 2021
klausler created this revision.
klausler added a reviewer: jeanPerier.
klausler added a project: Flang.
Herald added a subscriber: jdoerfert.
Herald added a reviewer: sscalpone.
klausler requested review of this revision.
It may not be great practice to pass a procedure (or procedure pointer)
with an implicit interface as an actual argument to correspond with
a dummy procedure (pointer), but it's not an error. Change to a
warning, and modify tests accordingly.
https://reviews.llvm.org/D108932
Files:
flang/lib/Semantics/check-call.cpp
flang/test/Semantics/call09.f90
flang/test/Semantics/call21.f90
Index: flang/test/Semantics/call21.f90
===================================================================
--- /dev/null
+++ flang/test/Semantics/call21.f90
@@ -0,0 +1,31 @@
+! RUN: %flang -fsyntax-only 2>&1 %s | FileCheck %s
+! Verifies that warnings issue when actual arguments with implicit
+! interfaces are associated with dummy procedures and dummy procedure
+! pointers whose interfaces are explicit.
+module m
+ contains
+ real function realfunc(x)
+ real, intent(in) :: x
+ realfunc = x
+ end function
+ subroutine s00(p0)
+ procedure(realfunc) :: p0
+ end subroutine
+ subroutine s01(p1)
+ procedure(realfunc), pointer, intent(in) :: p1
+ end subroutine
+ subroutine s02(p2)
+ procedure(realfunc), pointer :: p2
+ end subroutine
+ subroutine test
+ external :: extfunc
+ external :: extfuncPtr
+ pointer :: extfuncPtr
+ !CHECK: Actual procedure argument has an implicit interface which is not known to be compatible with dummy argument 'p0=' which has an explicit interface
+ call s00(extfunc)
+ !CHECK: Actual procedure argument has an implicit interface which is not known to be compatible with dummy argument 'p1=' which has an explicit interface
+ call s01(extfunc)
+ !CHECK: Actual procedure argument has an implicit interface which is not known to be compatible with dummy argument 'p2=' which has an explicit interface
+ call s02(extfuncPtr)
+ end subroutine
+end module
Index: flang/test/Semantics/call09.f90
===================================================================
--- flang/test/Semantics/call09.f90
+++ flang/test/Semantics/call09.f90
@@ -58,9 +58,6 @@
procedure(realfunc), pointer :: p
procedure(intfunc), pointer :: ip
integer, pointer :: intPtr
- external :: extfunc
- external :: extfuncPtr
- pointer :: extfuncPtr
p => realfunc
ip => intfunc
call s01(realfunc) ! ok
@@ -79,8 +76,6 @@
call s01(null(intPtr))
!ERROR: Actual argument associated with procedure dummy argument 'p=' is typeless
call s01(B"0101")
- !ERROR: Actual procedure argument has an implicit interface which is not known to be compatible with dummy argument 'p=' which has an explicit interface
- call s01(extfunc)
!ERROR: Actual argument associated with procedure pointer dummy argument 'p=' must be a POINTER unless INTENT(IN)
call s02(realfunc)
call s02(p) ! ok
@@ -94,10 +89,6 @@
call s02(null(p))
!ERROR: Actual argument associated with procedure pointer dummy argument 'p=' must be a POINTER unless INTENT(IN)
call s02(sin)
- !ERROR: Actual procedure argument has an implicit interface which is not known to be compatible with dummy argument 'p=' which has an explicit interface
- call s02(extfunc)
- !ERROR: Actual procedure argument has an implicit interface which is not known to be compatible with dummy argument 'p=' which has an explicit interface
- call s03(extfuncPtr)
end subroutine
subroutine callsub(s)
Index: flang/lib/Semantics/check-call.cpp
===================================================================
--- flang/lib/Semantics/check-call.cpp
+++ flang/lib/Semantics/check-call.cpp
@@ -553,9 +553,8 @@
messages.Say(
"Actual procedure argument has an implicit interface "
"which is not known to be compatible with %s which has an "
- "explicit interface"_err_en_US,
+ "explicit interface"_en_US,
dummyName);
- return;
}
}
} else { // 15.5.2.9(2,3)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D108932.369509.patch
Type: text/x-patch
Size: 3611 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/flang-commits/attachments/20210830/f5d84abd/attachment.bin>
More information about the flang-commits
mailing list