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));
