diff --git a/flang/lib/Evaluate/intrinsics.cpp b/flang/lib/Evaluate/intrinsics.cpp index e82b62e6f7c52..41e1e5c01cdcb 100644 --- a/flang/lib/Evaluate/intrinsics.cpp +++ b/flang/lib/Evaluate/intrinsics.cpp @@ -685,8 +685,10 @@ static const IntrinsicInterface genericIntrinsicFunction[]{ 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, diff --git a/flang/test/Semantics/dim01.f90 b/flang/test/Semantics/dim01.f90 index 48c0291b58f9e..2d56eb5853248 100644 --- a/flang/test/Semantics/dim01.f90 +++ b/flang/test/Semantics/dim01.f90 @@ -18,6 +18,8 @@ function f1(a,d) 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 @@ function f11(a,d) 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 @@ function f13(a,d) f13 = sum(a,dim=d) end function end module -