On Mar 18 2011, Tobias Burnus wrote:
Thomas Koenig wrote:
+ if (!(*e)->value.function.esym->attr.pure
+ && !(*e)->value.function.esym->attr.implicit_pure
+ && !(*e)->value.function.esym->attr.elemental)
+ return 0;
I have not followed the discussion nor have I fully read the patch, but
what's the reason for allowing ELEMENTAL functions? I understand the
PURE and the implicitly pure part. But without looking at the
scalarizer, I would assume that the same reasons which speak against
non-elemental impure functions should also speak against IMPURE
ELEMENTAL functions, don't they?
Impure elemental procedures came in only in Fortran 2008, if I understand
it. I don't know for certain, but my guess is that they are there
primarily to allow diagnostics in elemental procedures. What that means
about their required semantics is a bit unclear ....
Regards,
Nick Maclaren.