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)

Reply via email to