diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2007-07-27 09:03:41 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2007-07-27 09:03:41 +0000 |
commit | 55ed891fa1c90f2051f000b88c33020719cd6311 (patch) | |
tree | e597a6323aaa378e401b7a239c210d0d88beae37 /gcc/fortran | |
parent | d426d208b69c374caab83267d7227fd4ea6dad1c (diff) | |
download | gcc-55ed891fa1c90f2051f000b88c33020719cd6311.zip gcc-55ed891fa1c90f2051f000b88c33020719cd6311.tar.gz gcc-55ed891fa1c90f2051f000b88c33020719cd6311.tar.bz2 |
re PR fortran/32903 (Default initializer and intent(OUT): default initializer not used)
2007-07-27 Paul Thomas <pault@gcc.gnu.org>
PR fortran/32903
* trans-decl.c (gfc_trans_deferred_vars): Set intent(out)
derived types as referenced, if they have the the default
initializer set.
From-SVN: r126974
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 4 |
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index cb7cae7..b0089ef 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,10 +1,17 @@ +2007-07-27 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/32903 + * trans-decl.c (gfc_trans_deferred_vars): Set intent(out) + derived types as referenced, if they have the the default + initializer set. + 2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * gfortran.h (generate_isocbinding_symbol): Constify. * symbol.c (gen_special_c_interop_ptr, gen_cptr_param, generate_isocbinding_symbol): Likewise. -2007-07-24 Paul Thomas <pault@gcc.gnu.org> +2007-07-24 Paul Thomas <pault@gcc.gnu.org> PR fortran/31205 PR fortran/32842 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 6c6cba0..8a3b968 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -2735,8 +2735,7 @@ gfc_trans_deferred_vars (gfc_symbol * proc_sym, tree fnbody) /* If an INTENT(OUT) dummy of derived type has a default initializer, it must be initialized here. */ - if (f->sym && f->sym->attr.referenced - && f->sym->attr.intent == INTENT_OUT + if (f->sym && f->sym->attr.intent == INTENT_OUT && f->sym->ts.type == BT_DERIVED && !f->sym->ts.derived->attr.alloc_comp && f->sym->value) @@ -2744,6 +2743,7 @@ gfc_trans_deferred_vars (gfc_symbol * proc_sym, tree fnbody) gfc_expr *tmpe; tree tmp, present; gcc_assert (!f->sym->attr.allocatable); + gfc_set_sym_referenced (f->sym); tmpe = gfc_lval_expr_from_sym (f->sym); tmp = gfc_trans_assignment (tmpe, f->sym->value, false); |