summaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>2005-12-01 06:58:04 +0000
committerpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>2005-12-01 06:58:04 +0000
commite8ff394449a0f91ec52b45d38854fa7ae6108690 (patch)
tree9300fe88bbeb767ca5d194a50e0a21c529a8804e /gcc/fortran
parent1defd4fb1169ab9e64188cf9ffa47d625d262da6 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/fortran/trans-decl.c31
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. */