[flang] Fix crash in CO_REDUCE semantics (#131211)

A std::optional<> value was being accessed without first ensuring its
presence.
This commit is contained in:
Peter Klausler 2025-03-19 12:00:23 -07:00 committed by GitHub
parent 3f04fb42aa
commit 329bfa91b0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 2 deletions

View File

@ -1688,8 +1688,10 @@ static void CheckCoReduce(
characteristics::FunctionResult::Attr::Allocatable,
characteristics::FunctionResult::Attr::Pointer,
};
const auto *result{
procChars ? procChars->functionResult->GetTypeAndShape() : nullptr};
const characteristics::TypeAndShape *result{
procChars && procChars->functionResult
? procChars->functionResult->GetTypeAndShape()
: nullptr};
if (!procChars || !procChars->IsPure() ||
procChars->dummyArguments.size() != 2 || !procChars->functionResult) {
messages.Say(

View File

@ -0,0 +1,6 @@
! RUN: %python %S/test_errors.py %s %flang_fc1
external ext
integer caf[*]
!ERROR: OPERATION= argument of CO_REDUCE() must be a pure function of two data arguments
call co_reduce(caf, ext)
end