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

--- Comment #39 from Mikael Morin <mikael at gcc dot gnu.org> ---
(In reply to Mikael Morin from comment #38)
> By the way, I'm not sure that it's at all correct to avoid deep copies.
This seems to be safe:
as long as the procedure is pure, there is no way it can modify its input data.

> It's an artefact of temporary management which on one hand avoids deep
> copies, but on the other hand frees allocated components as for a regular
> object, as if a deep copy had happened before.
So, the problem is limited to derived types, which basically come from
expressions
of type EXPR_FUNCTION (or its variants EXPR_PPC, EXPR_COMPCALL), EXPR_ARRAY,
and EXPR_STRUCTURE.
A function will do a deep copy, so I think the only problematic cases are
EXPR_ARRAY, and maybe EXPR_STRUCTURE.

Reply via email to