Le 24/10/2026 à 16:04, Harald Anlauf a écrit :
Dear all,
this follow-up patch reduces the number of front-end memleaks that pop
up during simplification of TRANSFER(), and adds the original testcase
from the PR. The fix consists mainly of a reordering of the code in
gfc_simplify_transfer, taking into account the knowledge of the rank
of the result.
The changes to target-memory.cc could have been done differently,
but these are also sensitive to the BOZ handling. The current
solution was the simplest one I found that does not regress.
Regression tested on x86_64-pc-linux-gnu. OK for mainline?
Thanks,
Harald
OK modulo one small nit:
diff --git a/gcc/fortran/target-memory.cc b/gcc/fortran/target-memory.cc
index cf1bfa87950..cacb0591036 100644
--- a/gcc/fortran/target-memory.cc
+++ b/gcc/fortran/target-memory.cc
@@ -599,18 +599,25 @@ gfc_target_interpret_expr (unsigned char *buffer, size_t
buffer_size,
switch (result->ts.type)
{
case BT_INTEGER:
+ /* 'result->integer' is already mpz_initialized by the caller. */
'result->value.integer'
+ mpz_clear (result->value.integer);
result->representation.length =
gfc_interpret_integer (result->ts.kind, buffer, buffer_size,
result->value.integer);
break;