diff --git a/flang/lib/Evaluate/intrinsics.cpp b/flang/lib/Evaluate/intrinsics.cpp index c37a7f908d4d1..0f79ba6ed62b6 100644 --- a/flang/lib/Evaluate/intrinsics.cpp +++ b/flang/lib/Evaluate/intrinsics.cpp @@ -666,7 +666,7 @@ static const IntrinsicInterface genericIntrinsicFunction[]{ {ArgFlag::canBeMoldNull, ArgFlag::onlyConstantInquiry}}}, DefaultInt, Rank::elemental, IntrinsicClass::inquiryFunction}, {"lbound", - {{"array", AnyData, Rank::anyOrAssumedRank}, RequiredDIM, + {{"array", AnyData, Rank::arrayOrAssumedRank}, RequiredDIM, SizeDefaultKIND}, KINDInt, Rank::scalar, IntrinsicClass::inquiryFunction}, {"lbound", {{"array", AnyData, Rank::arrayOrAssumedRank}, SizeDefaultKIND}, @@ -1034,7 +1034,7 @@ static const IntrinsicInterface genericIntrinsicFunction[]{ {"trim", {{"string", SameCharNoLen, Rank::scalar}}, SameCharNoLen, Rank::scalar, IntrinsicClass::transformationalFunction}, {"ubound", - {{"array", AnyData, Rank::anyOrAssumedRank}, RequiredDIM, + {{"array", AnyData, Rank::arrayOrAssumedRank}, RequiredDIM, SizeDefaultKIND}, KINDInt, Rank::scalar, IntrinsicClass::inquiryFunction}, {"ubound", {{"array", AnyData, Rank::arrayOrAssumedRank}, SizeDefaultKIND}, diff --git a/flang/test/Evaluate/errors01.f90 b/flang/test/Evaluate/errors01.f90 index b20922237f240..90a0c300e3567 100644 --- a/flang/test/Evaluate/errors01.f90 +++ b/flang/test/Evaluate/errors01.f90 @@ -6,8 +6,8 @@ module m real x end type t contains - subroutine s1(a,b,c) - real :: a(*), b(:), c(..) + subroutine s1(a,b,c,d) + real :: a(*), b(:), c(..), d !CHECK: error: DIM=1 dimension is out of range for rank-1 assumed-size array integer :: ub1(ubound(a,1)) !CHECK-NOT: error: DIM=1 dimension is out of range for rank-1 assumed-size array @@ -23,7 +23,11 @@ subroutine s1(a,b,c) !CHECK: error: DIM=0 dimension must be positive integer :: lb4(lbound(c,0)) !CHECK: error: DIM=666 dimension is too large for any array (maximum rank 15) - integer :: lb4(lbound(c,666)) + integer :: lb5(lbound(c,666)) + !CHECK: error: 'array=' argument has unacceptable rank 0 + integer :: lb6(lbound(d,1)) + !CHECK: error: 'array=' argument has unacceptable rank 0 + integer :: ub4(ubound(d,1)) end subroutine subroutine s2 integer, parameter :: array(2,3) = reshape([(j, j=1, 6)], shape(array))