diff options
author | pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-12-01 06:58:04 +0000 |
---|---|---|
committer | pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-12-01 06:58:04 +0000 |
commit | e8ff394449a0f91ec52b45d38854fa7ae6108690 (patch) | |
tree | 9300fe88bbeb767ca5d194a50e0a21c529a8804e /gcc/fortran | |
parent | 1defd4fb1169ab9e64188cf9ffa47d625d262da6 (diff) | |
download | gcc-e8ff394449a0f91ec52b45d38854fa7ae6108690.tar.gz |
2005-12-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24789
* trans-decl.c (gfc_get_symbol_decl): Move the expression for
unit size of automatic character length, dummy pointer array
elements down a few lines from the version that fixed PR15809.
2005-12-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24789
* gfortran.dg/auto_char_dummy_array_2.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107805 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 31 |
2 files changed, 22 insertions, 16 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index f787fb76e57..f9fd567e785 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2005-12-01 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/24789 + * trans-decl.c (gfc_get_symbol_decl): Move the expression for + unit size of automatic character length, dummy pointer array + elements down a few lines from the version that fixed PR15809. + 2005-11-30 Bernhard Fischer <rep.nop@aon.at> PR fortran/21302 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 63320ae6dd4..ea127d090f8 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -847,25 +847,24 @@ gfc_get_symbol_decl (gfc_symbol * sym) if (TREE_CODE (length) != INTEGER_CST) { gfc_finish_var_decl (length, sym); - - /* Set the element size of automatic character length - length, dummy, pointer arrays. */ - if (sym->attr.pointer && sym->attr.dummy - && sym->attr.dimension) - { - tmp = gfc_build_indirect_ref (sym->backend_decl); - etype = gfc_get_element_type (TREE_TYPE (tmp)); - if (TYPE_SIZE_UNIT (etype) == NULL_TREE) - { - tmp = TYPE_SIZE_UNIT (gfc_character1_type_node); - tmp = fold_convert (TREE_TYPE (tmp), length); - TYPE_SIZE_UNIT (etype) = tmp; - } - } - gfc_defer_symbol_init (sym); } } + + /* Set the element size of automatic and assumed character length + length, dummy, pointer arrays. */ + if (sym->attr.pointer && sym->attr.dummy + && sym->attr.dimension) + { + tmp = gfc_build_indirect_ref (sym->backend_decl); + etype = gfc_get_element_type (TREE_TYPE (tmp)); + if (TYPE_SIZE_UNIT (etype) == NULL_TREE) + { + tmp = TYPE_SIZE_UNIT (gfc_character1_type_node); + tmp = fold_convert (TREE_TYPE (tmp), sym->ts.cl->backend_decl); + TYPE_SIZE_UNIT (etype) = tmp; + } + } } /* Use a copy of the descriptor for dummy arrays. */ |