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)
