https://gcc.gnu.org/g:9f5b3d4f6b8f1b9d42f4f08c69aaaad6b1942390
commit 9f5b3d4f6b8f1b9d42f4f08c69aaaad6b1942390 Author: Mikael Morin <mik...@gcc.gnu.org> Date: Thu Dec 12 20:49:44 2024 +0100 Correction régression Diff: --- gcc/fortran/trans-array.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc index a9b2d19b355a..c02fbde0ceaf 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -702,7 +702,9 @@ get_default_array_descriptor_init (tree type, gfc_typespec &ts, int rank, /* Don't init pointers by default. */ tree data_value; - if (!attr.pointer) + if (attr.pointer) + data_value = NULL_TREE; + else { tree data_field = gfc_advance_chain (fields, DATA_FIELD); data_value = fold_convert (TREE_TYPE (data_field), null_pointer_node); @@ -915,7 +917,6 @@ init_struct (stmtblock_t *block, tree data_ref, init_kind kind, init_values values) { tree type = TREE_TYPE (data_ref); - gcc_assert (TREE_CODE (type) == RECORD_TYPE); if (kind == SINGLE) { @@ -943,6 +944,8 @@ init_struct (stmtblock_t *block, tree data_ref, init_kind kind, build_constructor (type, values.multiple)); else { + gcc_assert (TREE_CODE (type) == RECORD_TYPE); + unsigned i; constructor_elt *ce; FOR_EACH_VEC_ELT (*values.multiple, i, ce)