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

commit a298570323cf10372d54c97a991c5745a3241344
Author: Mikael Morin <[email protected]>
Date:   Tue Aug 11 18:34:44 2026 +0200

    fortran: array descriptor: Remove redundant array type unwrapping [PR122521]
    
    TODO: Fortran-tested on aarch64-unknown-linux-gnu.  OK for mainline?
    
    -- >8 --
    
    The function gfc_set_descriptor_from_scalar unwraps any array type from the
    element type it passes as argument to the function gfc_get_dtype_rank_type.
    The latter function unwraps array types similarly from its input, making the
    previous unwrapping redundant.  This change removes it.
    
            PR fortran/122521
    
    gcc/fortran/ChangeLog:
    
            * trans-descriptor.cc (gfc_set_descriptor_from_scalar): Pass element
            type to gfc_get_dtype_rank_type without redundantly unwrapping any
            array type from it.

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

diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index 23321b5b48cb..6ea4a1565c69 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -901,8 +901,6 @@ gfc_set_descriptor_from_scalar (stmtblock_t *block, tree 
descr, tree scalar)
   tree etype = TREE_TYPE (scalar);
   if (!POINTER_TYPE_P (TREE_TYPE (scalar)))
     scalar = gfc_build_addr_expr (NULL_TREE, scalar);
-  else if (TREE_TYPE (etype) && TREE_CODE (TREE_TYPE (etype)) == ARRAY_TYPE)
-    etype = TREE_TYPE (etype);
 
   gfc_conv_descriptor_dtype_set (block, descr,
                                 gfc_get_dtype_rank_type (0, etype));

Reply via email to