[gcc(refs/users/mikael/heads/refactor_descriptor_v206.01)] fortran: array descriptor: Remove redundant array type unwrapping [PR122521]
Mikael Morin via Gcc-cvs <[email protected]>
| Newsgroups | gmane.comp.gcc.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://gcc.gnu.org/g:441fcdb048b08aa2ccd816d84fbab9786003065e commit 441fcdb048b08aa2ccd816d84fbab9786003065e Author: Mikael Morin <[email protected]> Date: Tue Aug 11 18:34:44 2026 +0200 fortran: array descriptor: Remove redundant array type unwrapping [PR122521] Fortran-tested on aarch64-unknown-linux-gnu. OK for mainline? -- >8 -- The function gfc_set_descriptor_from_scalar has this conditional: else if (TREE_TYPE (etype) && TREE_CODE (TREE_TYPE (etype)) == ARRAY_TYPE) etype = TREE_TYPE (etype); It unwraps any array from the element type before passing 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. 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 a7739355d4cb..8273be6300de 100644 --- a/gcc/fortran/trans-descriptor.cc +++ b/gcc/fortran/trans-descriptor.cc @@ -874,8 +874,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));