[flang-commits] [flang] [flang][openmp]Add UserReductionDetails and use in DECLARE REDUCTION (PR #140066)
via flang-commits
flang-commits at lists.llvm.org
Wed Jun 4 08:38:52 PDT 2025
================
@@ -3623,27 +3646,39 @@ static bool IsReductionAllowedForType(
case parser::DefinedOperator::IntrinsicOperator::Multiply:
case parser::DefinedOperator::IntrinsicOperator::Add:
case parser::DefinedOperator::IntrinsicOperator::Subtract:
- return type.IsNumeric(TypeCategory::Integer) ||
+ if (type.IsNumeric(TypeCategory::Integer) ||
type.IsNumeric(TypeCategory::Real) ||
- type.IsNumeric(TypeCategory::Complex);
+ type.IsNumeric(TypeCategory::Complex))
+ return true;
+ break;
case parser::DefinedOperator::IntrinsicOperator::AND:
case parser::DefinedOperator::IntrinsicOperator::OR:
case parser::DefinedOperator::IntrinsicOperator::EQV:
case parser::DefinedOperator::IntrinsicOperator::NEQV:
- return isLogical(type);
+ if (isLogical(type)) {
+ return true;
+ }
+ break;
// Reduction identifier is not in OMP5.2 Table 5.2
default:
DIE("This should have been caught in CheckIntrinsicOperator");
return false;
}
- }
- return true;
+ parser::CharBlock name{MakeNameFromOperator(*intrinsicOp, context)};
+ return CheckSymbolSupportsType(scope, name, type);
+ } else if (const auto *definedOp{
+ std::get_if<parser::DefinedOpName>(&dOpr.u)}) {
+ return CheckSymbolSupportsType(
+ scope, MangleDefinedOperator(definedOp->v.symbol->name()), type);
+ }
+ DIE("Intrinsic Operator not found - parsing gone wrong?");
----------------
NimishMishra wrote:
Nit: Should this be `DIE` or a semantic error that sources the offending source?
https://github.com/llvm/llvm-project/pull/140066
More information about the flang-commits
mailing list