https://gcc.gnu.org/g:a6915f014e9c9bb4e15404d14e6c62d91c6e6d9d

commit a6915f014e9c9bb4e15404d14e6c62d91c6e6d9d
Author: Mikael Morin <[email protected]>
Date:   Fri Oct 16 21:45:55 2026 +0200

    Extraction decl depuis deref var

Diff:
---
 gcc/fortran/trans-array.cc | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index 153196e6c683..df65f82be80b 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -677,7 +677,18 @@ gfc_get_array_span (tree desc, gfc_expr *expr)
   gfc_symbol *sym = (expr && expr->expr_type == EXPR_VARIABLE) ?
                    expr->symtree->n.sym : NULL;
 
-  if (tree span = GFC_DECL_GET_SPAN (desc))
+  tree decl = desc;
+  while (decl && !DECL_P (decl))
+    {
+      if (TREE_CODE (decl) == ADDR_EXPR
+         || INDIRECT_REF_P (decl)
+         || CONVERT_EXPR_P (decl))
+       decl = TREE_OPERAND (decl, 0);
+      else
+       decl = NULL_TREE;
+    }
+
+  if (tree span = GFC_DECL_GET_SPAN (decl ? decl : desc))
     /* A span addressed dummy loaded its span on entry.  */
     tmp = span;
   else if (is_span_addressed_array (desc)

Reply via email to