https://gcc.gnu.org/g:203e4c8225e3f5b40d27a0f49742f64e405cade9
commit 203e4c8225e3f5b40d27a0f49742f64e405cade9 Author: Mikael Morin <mik...@gcc.gnu.org> Date: Mon May 19 20:30:09 2025 +0200 Correction régression reduce_3 et reduce_4 Diff: --- libgfortran/intrinsics/reduce.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libgfortran/intrinsics/reduce.c b/libgfortran/intrinsics/reduce.c index 02f3aef7609d..a475813792db 100644 --- a/libgfortran/intrinsics/reduce.c +++ b/libgfortran/intrinsics/reduce.c @@ -95,7 +95,7 @@ reduce (parray *ret, painless by the use of pointer arithmetic throughout (except for MASK, whose type is known. */ ext0 = ext1 = ext2 = 1; - spc0 = spc1 = spc2 = 0; + spc0 = spc1 = spc2 = elem_len; scalar_result = (!dim_present && array_rank > 1) || array_rank == 1; @@ -140,12 +140,16 @@ reduce (parray *ret, if (dimen < array_rank) spc2 = GFC_DESCRIPTOR_SPACING (array, dimen); else - spc2 = 1; + spc2 = elem_len; } /* Allocate the result data, the result buffer and zero. */ if (ret->base_addr == NULL) - ret->base_addr = calloc ((size_t)(ext0 * ext2), elem_len); + { + ret->base_addr = calloc ((size_t)(ext0 * ext2), elem_len); + GFC_DESCRIPTOR_SPAN (ret) = GFC_DESCRIPTOR_SIZE (ret); + } + buffer = calloc (1, elem_len); zero = calloc (1, elem_len);