diff --git a/flang/lib/Evaluate/intrinsics.cpp b/flang/lib/Evaluate/intrinsics.cpp --- a/flang/lib/Evaluate/intrinsics.cpp +++ b/flang/lib/Evaluate/intrinsics.cpp @@ -1510,7 +1510,6 @@ if (const Expr *expr{arg->UnwrapExpr()}) { auto dc{characteristics::DummyArgument::FromActual( std::string{d.keyword}, *expr, context)}; - CHECK(dc); dummyArgs.emplace_back(std::move(*dc)); if (d.typePattern.kindCode == KindCode::same && !sameDummyArg) { sameDummyArg = j; diff --git a/flang/test/Semantics/call07.f90 b/flang/test/Semantics/call07.f90 --- a/flang/test/Semantics/call07.f90 +++ b/flang/test/Semantics/call07.f90 @@ -21,6 +21,8 @@ real, pointer :: a02(:) real, target :: a03(10) real :: a04(10) ! not TARGET + !ERROR: Actual argument 'NULL()' associated with dummy argument is not a variable or typed expression + print *, associated(null()) call s01(a03) ! ok !ERROR: Actual argument associated with CONTIGUOUS POINTER dummy argument 'p=' must be simply contiguous call s01(a02)