[flang-commits] [PATCH] D147390: [flang] NORM2(DIM=) argument can't be dynamically optional
Peter Klausler via Phabricator via flang-commits
flang-commits at lists.llvm.org
Sat Apr 1 14:24:57 PDT 2023
klausler created this revision.
klausler added a reviewer: PeteSteinfeld.
klausler added a project: Flang.
Herald added subscribers: sunshaoce, jdoerfert.
Herald added a project: All.
klausler requested review of this revision.
The intrinsic function table entry for NORM2 treats its DIM=
argument as if it can be dynamically optional; this is wrong,
and it should be treated in the same way as DIM= is for other
transformational intrinsic functions like SUM.
https://reviews.llvm.org/D147390
Files:
flang/lib/Evaluate/intrinsics.cpp
flang/test/Semantics/dim01.f90
Index: flang/test/Semantics/dim01.f90
===================================================================
--- flang/test/Semantics/dim01.f90
+++ flang/test/Semantics/dim01.f90
@@ -18,6 +18,8 @@
integer, optional, intent(in) :: d
!PORTABILITY: The actual argument for DIM= is optional, pointer, or allocatable, and it is assumed to be present and equal to 1 at execution time
f1 = sum(a,dim=d)
+ !PORTABILITY: The actual argument for DIM= is optional, pointer, or allocatable, and it is assumed to be present and equal to 1 at execution time
+ f1 = norm2(a,dim=d)
end function
function f2(a,d)
real, intent(in) :: a(:)
@@ -49,6 +51,8 @@
real, allocatable :: f11(:)
!WARNING: The actual argument for DIM= is optional, pointer, or allocatable, and may not be absent during execution; parenthesize to silence this warning
f11 = sum(a,dim=d)
+ !WARNING: The actual argument for DIM= is optional, pointer, or allocatable, and may not be absent during execution; parenthesize to silence this warning
+ f11 = norm2(a,dim=d)
end function
function f12(a,d)
real, intent(in) :: a(:,:)
@@ -65,4 +69,3 @@
f13 = sum(a,dim=d)
end function
end module
-
Index: flang/lib/Evaluate/intrinsics.cpp
===================================================================
--- flang/lib/Evaluate/intrinsics.cpp
+++ flang/lib/Evaluate/intrinsics.cpp
@@ -685,8 +685,10 @@
common::Intent::In, {ArgFlag::canBeNull}}},
SameCharNoLen, Rank::scalar, IntrinsicClass::inquiryFunction},
{"nint", {{"a", AnyReal}, DefaultingKIND}, KINDInt},
- {"norm2", {{"x", SameReal, Rank::array}, OptionalDIM}, SameReal,
+ {"norm2", {{"x", SameReal, Rank::array}, RequiredDIM}, SameReal,
Rank::dimReduced, IntrinsicClass::transformationalFunction},
+ {"norm2", {{"x", SameReal, Rank::array}, MissingDIM}, SameReal,
+ Rank::scalar, IntrinsicClass::transformationalFunction},
{"not", {{"i", SameInt}}, SameInt},
// NULL() is a special case handled in Probe() below
{"num_images", {}, DefaultInt, Rank::scalar,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D147390.510268.patch
Type: text/x-patch
Size: 2097 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/flang-commits/attachments/20230401/151b5811/attachment-0001.bin>
More information about the flang-commits
mailing list