https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93690

--- Comment #2 from Florian Schiffmann <floschiffmann at gmail dot com> ---
Hi Steve,

the complication here is that it is not the type with the assignment that is a
vector but the Outer type. The type with assignment is a scalar member of the
vector type. Hence the first question should be how the intrinsic assignment of
the vector of Type(outer) is handled.

Thanks to FortranFan on the comp.lang.fortran group:

cite 
[Note 18-007r1 document toward Fortran 2018 states in Section 10.2.1.3
Interpretation of intrinsic assignments, page 161, paragraph 6:

"If the variable is an array, the assignment is performed element-by-element on
corresponding array elements of the variable and expr"

and on page 163, paragraph 13:

"An intrinsic assignment where the variable is of derived type is performed as
if each component of the variable were assigned from the corresponding
component of expr using .. defined assignment for each nonpointer 
nonallocatable component of a type that has a type-bound defined assignment
consistent with the component, intrinsic assignment for each other nonpointer
nonallocatable component .." ]

According to me, this means that the intrinsic assignment working on outer
should work element wise. Then for each element the scalar assignment should be
called (not the vector version).

I can't say I am sure about it either as reading the standard gives me a
headache :). However, to me it makes sense as 

with my interpretation:
You have to inspect the Types containing the one with TBA
vs your interpretation:
You have to inspect the Types containing the one with TBA plus all direct and
indirect uses of the types (if vectors or not)

to decide whether the assignment has to be an elemental subroutine. 
Not sure whether I made perfect sense there but I hope you can decipher my
idea.

Flo

Reply via email to