aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorErik Edelmann <eedelman@gcc.gnu.org>2006-08-19 21:05:59 +0000
committerErik Edelmann <eedelman@gcc.gnu.org>2006-08-19 21:05:59 +0000
commit6df364d720c66a9153b3d1d9405124d149cddfa5 (patch)
tree9ffd252da63b015eb650b5b5e804b45dbdf68a64 /gcc/fortran/resolve.c
parentd58b0443ec5c1f1a434ac701aa41c0839a142ec2 (diff)
downloadgcc-6df364d720c66a9153b3d1d9405124d149cddfa5.zip
gcc-6df364d720c66a9153b3d1d9405124d149cddfa5.tar.gz
gcc-6df364d720c66a9153b3d1d9405124d149cddfa5.tar.bz2
re PR fortran/25217 (Derived type dummy argument having intent(out) attribute)
fortran/ 2006-08-19 Erik Edelmann <eedelman@gcc.gnu.org> PR fortran/25217 * resolve.c (resolve_fl_variable): Set a default initializer for derived types with INTENT(OUT) even if 'flag' is true. * trans-expr.c (gfc_conv_function_call): Insert code to reinitialize INTENT(OUT) arguments of derived type with default initializers. testsuite/ 2006-08-19 Erik Edelmann <eedelman@gcc.gnu.org> PR fortran/25217 * gfortran.dg/derived_init_2.f90: New. From-SVN: r116261
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r--gcc/fortran/resolve.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index cb45a2b..5c9786b 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -5232,8 +5232,8 @@ resolve_fl_variable (gfc_symbol *sym, int mp_flag)
}
/* Assign default initializer. */
- if (sym->ts.type == BT_DERIVED && !(sym->value || flag)
- && !sym->attr.pointer)
+ if (sym->ts.type == BT_DERIVED && !sym->value && !sym->attr.pointer
+ && !sym->attr.allocatable && (!flag || sym->attr.intent == INTENT_OUT))
sym->value = gfc_default_initializer (&sym->ts);
return SUCCESS;