[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