aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-decl.c
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2007-07-27 09:03:41 +0000
committerPaul Thomas <pault@gcc.gnu.org>2007-07-27 09:03:41 +0000
commit55ed891fa1c90f2051f000b88c33020719cd6311 (patch)
treee597a6323aaa378e401b7a239c210d0d88beae37 /gcc/fortran/trans-decl.c
parentd426d208b69c374caab83267d7227fd4ea6dad1c (diff)
downloadgcc-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/trans-decl.c')
-rw-r--r--gcc/fortran/trans-decl.c4
1 files changed, 2 insertions, 2 deletions
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);