https://gcc.gnu.org/g:2addd2fae6790868133e624d30940ef2c5220656

commit 2addd2fae6790868133e624d30940ef2c5220656
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Sat Mar 15 20:56:48 2025 +0100

    Ajout type DEFAULT_INITIALISATION

Diff:
---
 gcc/fortran/trans-descriptor.cc | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index 41eab9c75d33..7230fe88905f 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -1090,6 +1090,7 @@ enum descr_change_type {
   UNKNOWN_CHANGE,
   EXPLICIT_NULLIFICATION,
   INITIALISATION,
+  DEFAULT_INITIALISATION,
   SCALAR_VALUE
 };
 
@@ -1102,6 +1103,12 @@ struct descr_change_info {
       class modify_info *unknown_info;
       class nullification *nullification_info;
       class init_info *initialization_info;
+      struct
+       {
+         class default_init *info;
+         const symbol_attribute *attr; 
+       }
+      default_init;
       struct
        {
          class scalar_value *info;
@@ -1154,6 +1161,13 @@ get_descr_data_value (const descr_change_info &info)
     case INITIALISATION:
       return info.u.initialization_info->get_data_value ();
 
+    case DEFAULT_INITIALISATION:
+      if (!info.u.default_init.attr->pointer
+         || (gfc_option.rtcheck & GFC_RTCHECK_POINTER))
+       return null_pointer_node;
+      else
+       return NULL_TREE;
+
     case SCALAR_VALUE:
       {
        tree value = info.u.scalar_value.value;
@@ -1177,6 +1191,7 @@ get_descr_span (const descr_change_info &info)
     case UNKNOWN_CHANGE:
     case EXPLICIT_NULLIFICATION:
     case INITIALISATION:
+    case DEFAULT_INITIALISATION:
       return NULL_TREE;
 
     case SCALAR_VALUE:
@@ -1200,6 +1215,7 @@ get_descr_caf_token (const descr_change_info &info)
     case UNKNOWN_CHANGE:
     case EXPLICIT_NULLIFICATION:
     case INITIALISATION:
+    case DEFAULT_INITIALISATION:
       return null_pointer_node;
 
     case SCALAR_VALUE:
@@ -1333,6 +1349,8 @@ get_descr_dtype (const descr_change_info &change_info, 
gfc_typespec *ts,
   const init_info *init_info = nullptr;
   if (change_info.type == INITIALISATION)
     init_info = change_info.u.initialization_info;
+  else if (change_info.type == DEFAULT_INITIALISATION)
+    init_info = change_info.u.default_init.info;
   else if (change_info.type == SCALAR_VALUE)
     init_info = change_info.u.scalar_value.info;
   else
@@ -1412,7 +1430,7 @@ get_default_array_descriptor_init (tree type, 
gfc_typespec &ts, int rank,
 
   default_init di (attr);
   struct descr_change_info info;
-  info.type = INITIALISATION;
+  info.type = DEFAULT_INITIALISATION;
   info.descriptor_type = type;
   info.u.initialization_info = &di;
 
@@ -1455,7 +1473,7 @@ gfc_build_default_array_descriptor (tree type, 
gfc_typespec &ts, int rank,
 
   default_init di (attr);
   struct descr_change_info info;
-  info.type = INITIALISATION;
+  info.type = DEFAULT_INITIALISATION;
   info.descriptor_type = type;
   info.u.initialization_info = &di;

Reply via email to