[flang-commits] [flang] [flang][OpenMP][Semantics] Don't allow reduction of derived type components (PR #125480)
Tom Eccles via flang-commits
flang-commits at lists.llvm.org
Mon Feb 3 07:19:17 PST 2025
tblah wrote:
@kiranchandramohan I have added the TODO in lowering, but from the lowering error I wonder if we should really consider a derived type component as `definable`.
That wording is in all versions of the standard (IIRC). I previously assumed that it wasn't relevant here because `CheckReductionObjects()` already unconditionally calls `CheckDefinableObjects()`.
The error in lowering is because that object cannot be looked up in the symbol table because a component of a derived type isn't a symbol with a definition. I think `instance%component` is an expression which is not definable.
The wording in the Fortran standard is in section 3.47 of f2023. It says a definable object is capable of definition and permitted to become defined. Both of those conditions seem to require it to be a data object (3.42):
> constant, variable, or subobject of a constant
I think a derived type member is not constant and not a variable (if it were a variable we would be able to look it up in the symbol table).
https://github.com/llvm/llvm-project/pull/125480
More information about the flang-commits
mailing list