[gcc(refs/users/mikael/heads/refactor_descriptor_v05)] Correction régression reduce_3 et reduce_4
Mikael Morin
mikael@gcc.gnu.org
Fri Jun 13 15:07:08 GMT 2025
https://gcc.gnu.org/g:ca7209548cbb06ac383c8741fab422cbfa40c6ac
commit ca7209548cbb06ac383c8741fab422cbfa40c6ac
Author: Mikael Morin <mikael@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);
More information about the Gcc-cvs
mailing list